例如,如果我 run

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])

Python-3.x相关问答推荐

使用Polars阅读按日期键分区的最新S3镶木地板文件

使用pybind11时,在sys.exit(0)处成功完成测试后,Python单元测试冻结

Python根据阈值对数字进行分组

如何从选定的html内容中获取所需的文本

Pandas 根据条件增加Dataframe列

AddMultplicationEquality() 用于多个变量

Django在POST到外部URL时如何进行CSRF保护? 更新

如何使用 django rest 框架在 self forienkey 中删除多达 n 种类型的数据?

Python:如何从句子/段落中提取地址(非正则表达式方法)?

使用正确的数据类型时,使用 Cerberus 验证 JSON 架构会引发错误

BeautifulSoup 和 pd.read_html - 如何将链接保存到最终数据框中的单独列中?

排队多个子进程

ImportError:没有名为资源的模块

预分配一个无列表

如何确定一个类的元类?

Python 异步调试示例

如何将 SimpleGUI 与 Python 2.7 和 3.0 shell 集成

具有不均匀间隙的 Python 范围

python - Pandas - Dataframe.set_index - 如何保留旧的索引列

TypeError:无法将系列转换为