再利用不可能なものを 2 回繰り返す: リセットする理由と方法
イテレータを扱う場合、データ構造を 2 回繰り返すと問題になる可能性があります、一度だけ消費できます。 Python では、イテレータはリスト イテレータ、ジェネレータ式、その他のさまざまなオブジェクトで使用されます。
次のコードを考えてみましょう。
def test(data): for row in data: print("first loop") for row in data: print("second loop")
データがリスト イテレータやジェネレータ式では、イテレータが最初のループですでに消費されているため、コードは「最初のループ」を出力しますが、「2 番目のループ」は出力しません。 loop.
なぜこれが起こるのかを理解するには、イテレータがどのように動作するかを知る必要があります。イテレータは、一連の値を反復処理するステートフル オブジェクトです。反復中にイテレータの状態が更新され、最後の値が返されると、反復は完全に停止します。
したがって、同じイテレータを 2 回目に反復しようとすると、すぐに StopIteration 例外が発生します。 、取得する値がこれ以上ないことを示します。これにより、2 番目のループが効果的に終了します。
再利用不可能なものを再利用するための回避策
反復子を再利用するには、次のいずれかを実行できます。
イテレータの性質を理解し、これらの回避策を採用することで、Python でデータを複数回反復する必要がある状況に効果的に対処できます。
以上がPython で再利用不可能なイテレータを 2 回反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。