for文を用いてlambda関数を辞書に格納する方法
定義を少しずつ変えた複数の関数を辞書形式で保持したいため、
以下の様なpythonのコードを考えました。
funcs = {}
for i in range(5):
new_key = 'f'+str(i+1)
funcs[new_key] = lambda x: x**i #0次関数から4次関数を格納
しかしそれぞれの関数に引数を与えると、全て同じ値が返ってきます(最後に格納した関数の値)
for f in funcs.values():
print(f(5))
実行結果:
625
625
625
625
625
これを(1, 5, 25, 125, 625)を返すようにしたいのですが、
どのようにすればよいかご教授いただけないでしょうか。
ちなみに、for文を使わずに一つ一つ手で格納すると正しく値が返ってきました。
また上コードにより格納された各関数のidは別々となっていました。
for f in funcs.values():
print(id(f))
実行結果:
4503380040
4503310120
4503309984
4503309848
4503309168
以上、よろしくお願い致します。