在表达式中
import sympy
a = sympy.Symbol('a')
b = sympy.Symbol('b')
x = a + 2*b
Run Code Online (Sandbox Code Playgroud)
我想交换a并b检索b + 2*a.我试过了
y = x.subs([(a, b), (b, a)])
y = x.subs({a: b, b: a})
Run Code Online (Sandbox Code Playgroud)
但都不起作用; 结果是3*a在两种情况下b,由于某种原因,首先被替换.
任何提示?
您可以将一个simultaneous参数传递给替换,这将确保所有替换同时发生,并且不会像现在那样相互干扰。
y = x.subs({a:b, b:a}, simultaneous=True)
Run Code Online (Sandbox Code Playgroud)
输出:
2*a + b
Run Code Online (Sandbox Code Playgroud)
如果关键字
simultaneous是True,则在完成所有替换之前不会计算子表达式。