0
我需要編寫一個函數,它返回一個和函數列表,並將輸入數字添加到某個綁定值。這是我做過什麼:發生器和實際變量值
def addition_range(start, end):
if start >= end: return None
#res = ((lambda x: x + i) for i in range(start, end)) #1
res = [ (lambda x: x + i) for i in range(start, end) ] #2
return res
for i in addition_range(0, 5): print(i(2))
輸出應該是這樣的:2,3,4,5,6,但它是6,6,6,6,6
的問題是「我」變量,當我調用函數時,它們使用i(4)的實際值,而不是在生成列表過程中使用的值。問題可以簡單地通過使用(#1)來解決(#2),但我感興趣的是有沒有解決方案(#2)?我試過
res = [ (lambda x: x + copy.deepcopy(i)) for i in range(start, end) ]
但它沒有幫助。
謝謝。
的WinXP +的Python 3.2
謝謝,它的工作原理! – fogbit