python - 将 Mathematica 代码转换为 Python
问题描述
我正在将一些代码从 Mathematica 转换为 Python。假设我有以下列表:
l = [["x1", "x2", "x3"], ["x4", "x5", "x6"], ["x7", "x8"], ["x9",
"x10"], ["x11"]]
我想把上面变成一个多项式,这样列表中每个元素的长度就是变量 x 的幂。在 Mathematica 中,我通过以下方式做到这一点:
Total[x^Map[Length, l]]
这使:
Output: x + 2 x^2 + 2 x^3
这意味着我在列表 l 中有 1 个长度为 1 的元素、2 个长度为 2 的元素和 2 个长度为 3 的元素。在 Python 中,我尝试了以下操作:
sum(x**map(len(l), l))
但这不起作用,因为 x 没有定义,我也尝试使用“x”,它也不起作用。我想知道如何翻译这样的代码。
解决方案
您可以为此使用sympy:
import sympy as sym
l = [["x1", "x2", "x3"], ["x4", "x5", "x6"], ["x7", "x8"], ["x9", "x10"], ["x11"]]
x = sym.Symbol('x')
expr = sym.S.Zero
for exponent in map(len, l):
expr += x ** exponent
print(expr)
会给:
2*x**3 + 2*x**2 + x
在这里,我创建了一个符号零单例sympy.S.Zero
,然后我将x
' 提升到我们可以从中获得的那些幂中map(len, l)
。
print(list(map(len, l)))
会给:
[3, 3, 2, 2, 1]
推荐阅读
- java - 如何在 GUI 类中实现 Action Listener?
- android - 为什么作者在 Room 数据库的某个字段中添加@field:SerializedName 注解?
- c - 用C打印素数和的程序
- database - 我们是否必须将密码存储在与 Active Directory 链接的系统中?
- javascript - 它是在循环中调用apis并使用异步等待的写方法吗
- python - 在特定行和列 pandas 的文本开头分配新字符串
- scikit-learn - 如何用 epochs 训练 sklearn svm 模型(sklearn.svm.SVC)?
- r - 如何在 r 中创建一个 bday 计数器以在 5 个相同的 bday 发生后退出 while 循环
- hibernate - 渴望获取 - 查找与 JPQL
- objective-c - 如何声明用户定义的 setter、getter 方法?