ここでは何が起こっていますか?私は、関数のリストを作成しようとしている:これは私が何を期待Python Lambdaの問題
def f(a,b):
return a*b
funcs = []
for i in range(0,10):
funcs.append(lambda x:f(i,x))
やっていません。
funcs[3](3) = 9
funcs[0](5) = 0
しかし、リスト内のすべての機能が同じように見える、と9に固定値を設定する:
funcs[3](3) = 27
funcs[3](1) = 9
funcs[2](6) = 54
任意のアイデアを、私は、リストがこのように行動することを期待しますか?
functools.partial(f、i) – FogleBird
私は同意する必要があります。部分的なアプリケーションはここに行く方法です。 –
ここで、partial(f、i)はpartial(f、b = i)ではなくpartial(f、a = i)を表します。元の投稿と同じではありません。部分関数アプリケーション 'from right'(http://www.gossamer-threads.com/lists/python/dev/715103)は2回拒否されました。 – sunqiang