首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Sympy中找到表达式中的所有术语

如何在Sympy中找到表达式中的所有术语
EN

Stack Overflow用户
提问于 2016-06-01 10:32:09
回答 3查看 3.5K关注 0票数 14

我有一个表达式为:1/(x+1)+4*x/(x-1)+3-4*x**2+10*x**2

我需要的是一个包含这个表达式中的术语的列表。

[1/(x+1), 4*x/(x-1), 3, -4*x**2 , 10*x**2]

更新:它不应该收集类似的条款。因此,清单应分别有-4*x** 2和10*x** 2,而不是在收集相同条款后的6*x**2。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-02 10:57:20

根据问题和注释,如果可以将表达式作为字符串获得,则如果要避免术语集合,可以这样做。

代码语言:javascript
复制
(sympify("1/(x+1)+4*x/(x-1)+3-4*x**2+10*x**2", evaluate=False)).args

这将返回所有的条款,而不收集类似的条款。

票数 2
EN

Stack Overflow用户

发布于 2016-06-02 22:17:16

正确的方法是Add.make_args。这与Bjoern的答案中的expr.args相同,但如果表达式不是Add (单个术语),它仍然给出该术语,而不是遍历到该表达式。

代码语言:javascript
复制
In [20]: expr = 1/(x+1)+4*x/(x-1)+3-4*x**2

In [21]: print(Add.make_args(expr))
(3, 1/(x + 1), -4*x**2, 4*x/(x - 1))
票数 8
EN

Stack Overflow用户

发布于 2016-06-01 11:59:24

在这种情况下,非常容易:

代码语言:javascript
复制
>>> expr = 1/(x+1)+4*x/(x-1)+3-4*x**2
>>> expr.args
⎛     1        2   4⋅x ⎞
⎜3, ─────, -4⋅x , ─────⎟
⎝   x + 1         x - 1⎠
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37566132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档