Ответ 1
Вы можете использовать:
f.free_symbols
который вернет набор всех свободных символов.
Пример:
>>> import sympy
>>> x, y, z = sympy.symbols('x:z')
>>> f = sympy.exp(x + y) - sympy.sqrt(z)
>>> f.free_symbols
set([x, z, y])
Например, если я запустил
import sympy
x, y, z = sympy.symbols('x:z')
f = sympy.exp(x + y) - sympy.sqrt(z)
Есть ли какой-либо метод f
, который я могу использовать для получения списка или кортежа объектов sympy.Symbol
, содержащихся в этом выражении? Я бы предпочел не разбираться srepr(f)
или разобрать вниз через f.args
.
В этом случае g.args[0].args[1].args[0]
дает мне Symbol("z")
, а g.args[1].args[0].args
дает мне набор (Symbol("x"), Symbol("y"))
, но, очевидно, они специфичны для выражения.
Вы можете использовать:
f.free_symbols
который вернет набор всех свободных символов.
Пример:
>>> import sympy
>>> x, y, z = sympy.symbols('x:z')
>>> f = sympy.exp(x + y) - sympy.sqrt(z)
>>> f.free_symbols
set([x, z, y])
Обратите внимание, что ответ "JuniorCompressors" содержит только свободные переменные.
Если у вас есть Sum
, Product
, Integral
или что-то подобное, вы можете или не хотите дополнительно знать переменную интеграции/суммирования, используя атрибут .variables
:
In [216]: (x, n) = sympy.symbols("x n")
In [217]: f = sympy.Sum(x, (n, 0, 10))
In [218]: f.free_symbols
Out[218]: {x}
In [219]: f.variables
Out[219]: [n]