计算 Python 中的列表 3.7

Calculate lists in Python 3.7

我想知道是否可以计算一个列表,例如这个

calculation = [1, "+", 2, "*", 15]

所以 returns 31.

也许你可以看一下二叉表达式树。

binary expression tree

当然可以:

eval(' '.join(map(str, calculation)), {}, {})

内部 join(没有双关语意)构建一个有效 Python 代码的字符串,然后您只需 eval() 它。

两个 {} 是可选的,它们使代码运行时无需访问周围的全局和局部变量。

eval可用于计算python中的表达式(字符串形式)。

可以得到想要的输出如下

eval(''.join([str(x) for x in calculation]))

永远不要使用 eval。检查这个 post

相反,您可以参考其他一些库,例如 asteval

from asteval import Interpreter
aeval = Interpreter()
calculation = [1, "+", 2, "*", 15]
aeval.eval(''.join(map(str, calculation)))