Python3において以下の二つのコードは異なる挙動をします:
fs = [lambda x: i*x for i in range(3)]
for i in range(3):
print(fs[i](3))
これは6 6 6
と出力され、
fs2 = []
for i in range(3):
fs2.append(lambda x: i*x)
for i in range(3):
print(fs2[i](3))
こちらは0 3 6
と出力されます。
両者は一見同じ挙動をするように思えますが、どうして異なった挙動をするのでしょうか?