我試圖創建一個函數列表,然後應用於數字列表。我通過遍歷一系列數字來完成此操作,並使用for循環中的每個數字定義一個lambda函數。然後第二個for循環用於將每個函數應用於10個數字的相同列表。在另一個列表中應用lambda函數列表時發生意外的行爲
問題是我的lambdas列表似乎都採用for循環的最終值。
fx_lst = []
for k in range(1,3,1):
func = lambda x_: k * x_
fx_lst.append(func)
xlst = range(1,10,1)
for fx in fx_lst:
ylst = map(lambda xin_: fx(xin_), xlst)
print i, ylst
ylst打印: [2,4,6 ... 18] [2,4,6 ... 18]
很顯然,我不明白一些事情的方式lambda表達式店可變信息。
很好解釋,並完美的作品。謝謝。我以前從來沒有聽說過捲餅,所以這是我需要研究的東西! – user2185097
@ user2185097很高興能幫到您!您可能會對https://stackoverflow.com/questions/36314/what-is-currying感興趣 –