SymPy:交换两个变量

Nic*_*mer 5 python sympy

在表达式中

import sympy

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

x = a + 2*b
Run Code Online (Sandbox Code Playgroud)

我想交换ab检索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,由于某种原因,首先被替换.

任何提示?

mir*_*ulo 6

您可以将一个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)

从文档中subs

如果关键字simultaneousTrue,则在完成所有替换之前不会计算子表达式。