Как заменить несколько символов в выражении в sympy?

Присвоение переменной напрямую не изменяет выражения, которые использовали переменную задним числом.

>>> from sympy import Symbol
>>> x = Symbol('x')
>>> y = Symbol('y')
>>> f = x + y
>>> x = 0

>>> f
x + y

Ответ 1

Чтобы заменить несколько значений:

>>> from sympy import Symbol
>>> x, y = Symbol('x y')
>>> f = x + y
>>> f.subs({x:10, y: 20})
>>> f
30

Ответ 2

На самом деле sympy предназначен не для замены значений, пока вы действительно не захотите заменить их на subs (см. http://docs.sympy.org/latest/tutorial/basic_operations.html)

Try

f.subs({x:0})
f.subs(x, 0) # as alternative

вместо

x = 0

Ответ 3

Команда x = Symbol('x') хранит Sympy Symbol('x') в переменной Python x. Выражение Sympy f, которое вы создаете впоследствии, содержит Symbol('x'), а не переменную Python x.

Когда вы переназначаете x = 0, переменная Python x устанавливается на ноль и больше не связана с Symbol('x'). Это не влияет на выражение Sympy, которое по-прежнему содержит Symbol('x').

Это лучше всего объяснить на этой странице документации Sympy: http://docs.sympy.org/latest/gotchas.html#variables

Что вы хотите сделать, это f.subs(x,0), как сказано в других ответах.