我真的没有代码可以用这个来发布,因为我非常坚持如何写它。我必须给出一个正整数列表和一个x值来复制下面的图片示例。
我所拥有的等式是p(x) = a0 + a1x + a2x**2 + a3x**3 + ... + anx**n
,所以我的想法是检查列表的长度并使其自动确定它必须做多少计算,然后用任何值替换x在名单之外。不幸的是,我不知道如何写这个或从哪里开始。
答案 0 :(得分:1)
以下是您实施poly
的方法:
def poly(l, x):
sum = 0
xp =1
for a in l:
sum += a *xp #add next term
xp = x* xp #xp is x^p
return sum
print poly([1,2,1],2)
print poly([1,0,1,0,1],3)
答案 1 :(得分:1)
def poly(a_list, x):
ans = 0
for n,a in enumerate(a_list):
ans += a*x**n
return ans
enumerate函数返回一个元组,其中包含列表中每个元素的索引和值。因此,您可以使用“for index,value in enumerate(list)”轻松遍历列表。
答案 2 :(得分:0)
您可以使用itertools starmap
>>> from itertools import starmap
>>> def poly(a_list, x):
... val = lambda p, a: a*x**p
... return sum(starmap(val, enumerate(a_list)))
...
>>> poly([1, 2, 1], 2)
9
>>> poly([1, 0, 1, 0, 1], 2)
21
答案 3 :(得分:0)
如果你有numpy会更好:
>>> from numpy import polyval
>>> polyval([1, 2, 1], 2)
9
>>> polyval([1, 0, 1, 0, 1], 2)
21
我认为你必须首先反转a_list。 (它恰好起作用,因为a_list是回文)