2016-11-07 5 views
-1

iterを変換しているようです。 iterインデックスを最後の要素に移動する理由をリストするには、なぜですか?イテレータをリストに変換する理由イテレータを最後のインデックスに移動する理由

l = iter([1, 2, 3]) 
x = list(l) 
print l.next() 

エラーメッセージ:

トレースバック(最新の呼び出しの最後): 印刷l.next()

呼び出すとStopIteration

+0

それはそれが何をするかだから:それは次のように何かをするより良いデモンストレーションのために

。イテレータオブジェクトが何であるか知っていますか? – TigerhawkT3

+0

オハイオ州です! ご迷惑をおかけします。 – anati

答えて

0

まず、あなたは新しいを作成しているのでオブジェクト。第2に、イテレータオブジェクトは、アイテムをメモリにすべて持っていないため、オンデマンドでアイテムを生成します。一度終了すると戻ってくることはありません。そういうわけで彼らはそれをワンショットと呼ぶのです。そのため、イテレータでlistを呼び出すと、イテレータを消費してリスト内のアイテムを保持することによって、新しいリストオブジェクトを作成しています。

In [8]: l = iter([1, 2, 3]) 

In [9]: x = [item for item in l] 

In [10]: x 
Out[10]: [1, 2, 3] 
+0

*** Thanx!*** @Kasramvd – anati

関連する問題