失敗しました Pythonでラムダ式
Pythonでプラス1する関数、プラス2する関数、…のリストを作ろうとして失敗しました。
#悪い例 ys = [] for i in range(4) : ys.append( lambda x: print(i+x) ) for f in ys : f(10) print() #良い例 ys = list(map( lambda x: lambda x2: print(x2+x), range(4) )) for f in ys : f(10)
実行した結果は、
13 13 13 13 10 11 12 13
Windwos 8 64-bit, Python 3.4.2の結果です。
よくよく考えなおせば、まあ、そうなるな、という気がしてきます。
下半分をずうずうしく「良い例」などと書いてはいますが、はずかしいです。