Substituição recursiva no sympy
Eu tenho uma expressão sympy com várias variáveis que precisam ser substituídas. O problema é que algumas das expressões a serem substituídas também contêm instâncias de variáveis que precisam ser substituídas.
from sympy import *
from sympy.abs import a,b, x,y
expr = a + b
replace = [[a, x+y], [b, 2*a]]
expr.subs(replace) # 2*a + x + y, I want 3*x + 3*y
Se a lista de substituição estiver na ordem correta, ela aplicará cada substituição sequencialmente, embora no meu aplicativo real eu não saiba qual ordem seria apropriada:
expr.subs(reversed(replace)) # 3*x + 3*y
Eu posso forçar a substituição aplicando a substituição n vezes aexpr
oureplace
, mas isso parece um desperdício computacional:
result = expr
for _ in replace:
# Applying n times
result = result.subs(replace)
Eu estava esperando por umrecursive
opção parasubs
, mas isso parece não existir. Alguma opção melhor?