python - tutorial - ¿Cómo puedo obtener una lista de los símbolos en una expresión sympy?
integrales sympy (2)
Puedes usar:
f.free_symbols
que devolverá un conjunto de todos los símbolos libres.
Ejemplo:
>>> import sympy
>>> x, y, z = sympy.symbols(''x:z'')
>>> f = sympy.exp(x + y) - sympy.sqrt(z)
>>> f.free_symbols
set([x, z, y])
Por ejemplo, si corro
import sympy
x, y, z = sympy.symbols(''x:z'')
f = sympy.exp(x + y) - sympy.sqrt(z)
¿Hay algún método de f
que pueda usar para obtener una lista o tupla de objetos sympy.Symbol
que contiene la expresión? Prefiero no tener que analizar srepr(f)
o analizar hacia abajo a través de f.args
.
En este caso, g.args[0].args[1].args[0]
me da el Symbol("z")
, mientras que g.args[1].args[0].args
me da la tupla (Symbol("x"), Symbol("y"))
, pero obviamente estos son específicos de la expresión.
Tenga en cuenta que la respuesta de Junior Compressors solo enumera las variables libres .
Si tiene una Sum
, un Product
, una Integral
o algo similar, es posible que desee o no saber adicionalmente la variable de integración / suma mediante el atributo .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]