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'到最後一個元素。 –