首页 > 解决方案 > 将 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”,它也不起作用。我想知道如何翻译这样的代码。

标签: pythonpython-3.xlistwolfram-mathematica

解决方案


您可以为此使用

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]

推荐阅读