2
サンプルコード:上記のコードを使用してなぜこのプリントが次の結果を変更しますか?
p = map(some_logic)
print(list(p)) # HERE
p = filter(some_logic, p)
print(list(p))
、最初の行によって生成p
は常に同じです。しかし、コメント行にを追加すると、、最後のプリントは[]
と出力されます。 ここには行がなければ、最後のprint
はp
の正しい内容を示します。
この原因は何ですか?
ありがとうございました。 Pythonの副作用を認識していませんでした。 – Magicloud
@Magicloudそれは副作用ではないので、 'map'と' filter'はリストの代わりにイテレータを返します。例えば、for..inループで使用することができます。一度に結果を得る。 –
なぜPython3にそれらのMap/Filterオブジェクトがあるのか分かります。奇妙なことの1つは、リスト(オブジェクトを通過)の後で、エラーを出さずにオブジェクトを再びリストすることができますが、予期せぬ結果です。 – Magicloud