2
我想实现这样的如何在python中创建函数列表?
list1 = [lambda x: x+0, lambda x: x+1]
做这个
list2 = [lambda x: x+n for n in range(2)]
但它不工作! (为什么不?) 如何以编程方式创建函数列表?
我想实现这样的如何在python中创建函数列表?
list1 = [lambda x: x+0, lambda x: x+1]
做这个
list2 = [lambda x: x+n for n in range(2)]
但它不工作! (为什么不?) 如何以编程方式创建函数列表?
n
由用于表达重新分配,所以对于表达完成后都将看到的n
值是这个问题的1
更典型的例子可以是没有列表表达式可见:
list3 = []
for n in range(2):
def f(x):
return x + n
list3.append(f)
这里所有创建的函数对象都会引用相同的变量n
,它将被赋值为1,并且这两个函数对象将以lambda x: x + 1
的形式运行。
您可以通过为每个创建的函数变量创建额外的范围对付它:
a = [(lambda n: lambda x: x+n)(n) for n in range(2)]
确实,这是我第一次尝试,然后我认为lambda可能会起作用,除非不...... – Ziofil
因为拉姆达结合'N'到最后一个元素。 –