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

将字符串格式的数学公式转换为Python3中可用的格式,python,string,math,python-3.x,exponentiation,Python,String,Math,Python 3.x,Exponentiation,所以我有一个函数,它接受一个字符串格式的数学方程和一个数字列表 函数的目的是将该函数应用于每个数字(指数函数),并返回结果 例如,我试图将“x**4”传递给它,列表[4,3,2] 当然,最终的结果是[256,81,16] 如何将字符串转换为数学公式,同时还要记住字符串可以是“x*2”或“x*3”中的任何一个。这要求您提前知道var名称。如果没有,请解析它,然后使用这个 >>> operation = "x**4" >>> num_list = [4,3,2]

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

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

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

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

如何将字符串转换为数学公式,同时还要记住字符串可以是“x*2”或“x*3”中的任何一个。这要求您提前知道var名称。如果没有,请解析它,然后使用这个

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

这取决于你需要它有多复杂。你能使用内置的地图吗

x = [4, 3, 2]

def exp4( val ):
    return val ** 4

map( exp4, x )

您可以定义所需的函数,并将其应用为一个when。您没有说过是否需要动态拾取函数的能力,它假定有一个可写入的(在本例中为列表)。

您需要一个查找表。此表将存储程序要执行的所有有效操作。当你得到字符串时,你通过删除所有的非字母数字字符(字符串)来解析它,然后你使用查找表来决定需要做什么操作,C.B.s的答案看起来不错。
eval
是一个内置的:它不是来自
math
库。我在Python命令行中尝试了这段代码来测试它,当我在自己的代码中尝试它时,我得到了:[True,False,False]:
def getYTable(function,xlist):result=[]result.append(eval(function)for x in xlist)返回结果def Main():ylist=getYTable(“x**2,[1,2,3])print(ylist)
我最终得到[]这里发生了什么?eval对我来说有点陌生。没关系,我知道了
def getYTable(function,xlist):#在这里为xlist:result.append(eval(function))中的x编写实现result=[]返回结果