ループ内の関数の作成

|

ループ内に関数を作成しようとしています:

  features = [] for i in range(3):def f():return i#alternate:f = lambda :i Functions.append(f) 

問題は、すべての関数が同じになることです。0、1、および2を返す代わりに、3つの関数すべてが2を返します。

  print([f()for f in関数])#期待される出力:[0、1、2]#実際の出力:[2、2、2]  

これが発生する理由と、それぞれ0、1、および2を出力する3つの異なる関数を取得するにはどうすればよいですか?