枚举在多项式函数 (Python) 中如何工作?
How does enumerate work in polynomial function (Python)?
我是一个 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
例如如果我采用 x = 2 的三次多项式,程序 returns 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)
这就是程序 returns:
Out[68]:
5
出乎我的意料。我想我误解了枚举版本是如何计算系数的。谁能告诉我我是怎么想错的?
以前的版本似乎更通用,因为它允许在列表中使用不同的系数,而我不确定枚举版本中的标量代表什么。
您应该使用与 evalP
相同的参数调用 evalPoly
,例如evalPoly([1,1,1,1],2)
当你调用 evalPoly([3,1],2)
时,它 return 3*2^0 + 1*2^1 等于 5。
我是一个 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
例如如果我采用 x = 2 的三次多项式,程序 returns 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)
这就是程序 returns:
Out[68]:
5
出乎我的意料。我想我误解了枚举版本是如何计算系数的。谁能告诉我我是怎么想错的?
以前的版本似乎更通用,因为它允许在列表中使用不同的系数,而我不确定枚举版本中的标量代表什么。
您应该使用与 evalP
相同的参数调用 evalPoly
,例如evalPoly([1,1,1,1],2)
当你调用 evalPoly([3,1],2)
时,它 return 3*2^0 + 1*2^1 等于 5。