Подтвердить что ты не робот

Как я могу получить список символов в выражении sympy?

Например, если я запустил

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")), но, очевидно, они специфичны для выражения.

4b9b3361

Ответ 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])

Ответ 2

Обратите внимание, что ответ "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]