nまでの二乗和を計算したかったのですが、次に、このコードは0〜4の範囲のマップオブジェクトのリストを生成します。Python:マップオブジェクト上で 'list'を2回呼び出す
m = map(lambda x: x**2, range(0,4))
十分に簡単です。今メートルのリストを呼び出し、その後、合計:
>>> sum(list(m))
>>> 14
予期しない動作が、私は再び最後の行を実行する場合、合計が0であるということである。
>>> sum(list(m))
>>> 0
私はリストを呼び出すためであると思われます(m)は空のリストを返しますが、この動作の説明は見つかりません。誰かがこれで私を助けることができますか?それが枯渇し、何の値が得られないということの後にはPython 3 Generatorで
'map'は、最初の' list'呼び出しで消費される* iterator *です。なぜ 'list(m)'を割り当てて再利用しないのですか? – jonrsharpe
@jonrsharpeはい、私はそれが代案だと思っていますが、なぜこれが起こるのか知りたかったのです。だからあなたはlist()がイテレータを消費すると言っていますか?もっと教えてもらえますか? – ADB
Pythonチュートリアル/ドキュメンテーション* "python iterator" *のGoogle検索ですか? – jonrsharpe