我正在尝试构建由相同函数但参数不同的函数[f1(),f2(),...,fn()]的列表。 例如,假设f(x,i),目标是定义列表[f1(),f2(),...,fn()],其中fi(x)= f(x,i)。 / p>
我已经在Python 3上尝试过以下代码:
F=[]
for i in range(5):
f = lambda x:x+i
F.append(f)
或
G=[0]*5
for i in range(5):
G[i]=lambda x:x+i
然后,通过用x = 0打印这些内置函数
print([F[i](0) for i in range(5)])
print([G[i](0) for i in range(5)])
但是我得到[4,4,4,4,4]
而不是[0,1,2,3,4]
。
据我了解,我尝试建立列表的方式是错误的,因为i
值的更改会影响先前定义的所有函数。那么,如何避免呢?
谢谢!
答案 0 :(得分:0)
from functools import partial
def foo(x, y):
return x + y
funcs = [partial(foo, i) for i in range(10)]
for f in funcs:
print(f(10))