将字符串格式的数学等式转换为可在Python3中使用的数学等式

时间:2014-02-21 17:15:31

标签: python string math python-3.x exponentiation

所以我有一个函数,它采用字符串格式的数学方程式和数字列表。

该函数的目的是将该函数应用于每个数字(指数函数),并返回结果。

例如,我试图将“x ** 4”传递给它,列表[4,3,2]

最终结果当然是[256,81,16]

如何将字符串转换为数学方程,同时还要记住字符串可以是“x * 2”或“x * 3”中的任何内容。

2 个答案:

答案 0 :(得分:2)

使用eval function,并使用列表推导。这要求您提前知道var名称。如果不这样做,请解析它,然后使用它。

>>> operation = "x**4"
>>> num_list = [4,3,2]
>>> [eval(operation) for x in num_list]
[256, 81, 16]

答案 1 :(得分:0)

取决于你需要多么复杂。你能否使用内置的地图:

x = [4, 3, 2]

def exp4( val ):
    return val ** 4

map( exp4, x )

您可以定义所需的功能并将其作为时间应用。你还没有说过你是否需要一个能够动态选择函数的能力而且它假定一个可以移动的(在这种情况下是列表)。