如何使用带有不同参数的一个函数创建函数列表?

时间:2019-03-28 11:15:23

标签: python list function

我正在尝试构建由相同函数但参数不同的函数[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值的更改会影响先前定义的所有函数。那么,如何避免呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用functools.partial

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))