如何在多项式函数(Python)中枚举工作?

时间:2016-02-10 09:24:32

标签: python enumeration

我是一个Python初学者,对于在以下SO线程中求和多项式问题时枚举函数有点困惑:

Evaluating Polynomial coefficients

该线程包括几种求解多项式求和的方法。我理解以下版本:

def evalP(lst, x):
    total = 0
    for power in range(len(lst)):
        total += (x**power) * lst[power] # lst[power] is the coefficient
    return total

E.g。如果我使用x = 2的三次多项式,程序将根据笔和纸计算返回15,如我所料:

evalP([1,1,1,1],2)

Out[64]:
15

但是还有另一个更整洁的版本使用枚举函数:

evalPoly = lambda lst, x: sum((x**power) * coeff for power, coeff in enumerate(lst))

问题在于我无法将之前的结果复制到那里。这就是我尝试过的:

coeff = 1
power = 3
lst = (power,coeff)
x = 2
evalPoly(lst,x)

这就是程序返回的内容:

Out[68]:
5

不是我的预期。我想我误解了枚举版本对系数的影响。谁能告诉我我怎么想这个错?

之前的版本似乎更通用,因为它允许列表中的系数不同,而我不确定枚举版本中的标量代表什么。

1 个答案:

答案 0 :(得分:1)

您应该使用与evalPoly相同的参数来呼叫evalP,例如evalPoly([1,1,1,1],2)

当你致电evalPoly([3,1],2)时,它会返回3 * 2 ^ 0 + 1 * 2 ^ 1,等于5。