Python 我怎样才能得到一个symphy表达式中的符号列表?

Python 我怎样才能得到一个symphy表达式中的符号列表?,python,python-3.x,sympy,Python,Python 3.x,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”),S

例如,如果我跑步

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])
请注意,仅列出自由变量

如果您有a、a、an或类似的内容,您可能希望也可能不希望使用
.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]

一个非常有用的属性是原子

x,y,z=sympy.symbols('x:z')
expr1=sympy.exp(x+y)-sympy.sqrt(z)
显示(expr1.free_符号)
显示(表示原子(符号))

{请注意,这只返回自由符号。例如,对于
Sum(T,(n,1,n))/n
它返回
{n,T}
,但不返回
n
。请注意
variables
属性仅适用于这些具体的表达式类型。例如,这失败:
f=sympy.Sum(x,(n,0,10))*2
因为现在
f
的类型是
Mul
,它没有该属性。