Python在lambda表达式中使用字符串(带变量)

时间:2015-05-24 17:19:19

标签: python lambda

我想在lambda表达式中使用多项式的字符串,但我无法弄清楚如何做到这一点。这可能是不可能的,但如果是的话,我会爱一些帮助!

我正在尝试做的一个例子是:

f = lambda x: '3*x^3 + 2*x^2 -4*x +8'

假设我只能访问str。

类型中的多项式

是否有删除引号或eval版本的变量?

2 个答案:

答案 0 :(得分:1)

您可以使用lambda

中的np.polyval代替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包。