我想在lambda表达式中使用多项式的字符串,但我无法弄清楚如何做到这一点。这可能是不可能的,但如果是的话,我会爱一些帮助!
我正在尝试做的一个例子是:
f = lambda x: '3*x^3 + 2*x^2 -4*x +8'
假设我只能访问str。
类型中的多项式是否有删除引号或eval版本的变量?
答案 0 :(得分:1)
您可以使用lambda
numpy
In [19]: import numpy as np
In [20]: np.polyval([3,2,-4,8],2)
Out[20]: 32
如果您的意思是4^x
,那么快速修复
In [21]: np.polyval([3,2,0,-pow(4,2)+8],2)
Out[21]: 24
或与lambda
f=lambda mylist,x: sum((x**power) * coeff for power, coeff in enumerate(reversed(mylist)))
print f([3,2,-4,8],2)
答案 1 :(得分:0)
你想避免使用eval吗?否则你可以这样做:
x = 2
eq = '3*x^3 + 2*x^2 -4^x +8'
eval(eq.replace('x',str(x)).replace('^','**'))
在Python中^
是bitwise operator,因此需要将其替换为**
operator。
另请查看SymPy包。