SymPy:交换两个变量

SymPy: Swap two variables

在像

这样的表达式中
import sympy

a = sympy.Symbol('a')
b = sympy.Symbol('b')

x = a + 2*b

我想交换 ab 以检索 b + 2*a。我试过了

y = x.subs([(a, b), (b, a)])
y = x.subs({a: b, b: a})

但都不起作用;在这两种情况下,结果都是 3*a,因为 b,出于某种原因,首先被替换。

有什么提示吗?

有一个 simultaneous 参数可以传递给替换,这将确保所有替换同时发生并且不会像现在这样相互干扰。

y = x.subs({a:b, b:a}, simultaneous=True)

输出

2*a + b

From the docs for subs:

If the keyword simultaneous is True, the subexpressions will not be evaluated until all the substitutions have been made.