コンテナに対して複数の繰り返しを実行する正しい方法は何ですか? Pythonドキュメントから:リストを2回反復する正しい方法はありますか?
イテレータ - (そのようなリストのような)コンテナオブジェクトは、新鮮な新しい イテレータあなたはITER()関数に渡したり、forループ でそれを使用するたびに生成されます。イテレータでこれを試行すると、以前の反復パスで使用された同じイテレータオブジェクト が返され、 は空のコンテナのように見えます。
イテレータのnext()メソッド がStopIterationを呼び出すと、それ以降の呼び出しで引き続きこれが行われることがプロトコルの意図です。 このプロパティに従わない実装は壊れているとみなされます。 (この制約はPython 2.3で追加されました。Pythonの2.2で、様々な イテレータはこのルールに従って分割されます。)
私はこのコードをお持ちの場合:
slist = [1,2,3,4]
rlist = reversed(slist)
list(rlist)
#[4,3,2,1]
tuple(rlist)
#()
最も簡単とどうなりますか'rlist'を2回以上反復する最も正しい方法は?
注意を反復処理する必要があるたびに新しいリバースイテレータを作成することですリストの2倍 - それは簡単です。あなたは実際に '>'を2回繰り返しています。 –
mgilson