イテレータは next() 操作をサポートするオブジェクトです。これには一連の要素が含まれており、 next() 操作が実行されると、要素の 1 つが返され、すべての要素が返されると、StopIteration 例外が生成されます。
ite() は、リスト、タプル、辞書、セットなどのさまざまな Python オブジェクトをパラメーターとして受け入れ、それらをイテレーターに変換できます。イテレータは、for ステートメントまたはステートメント内で使用できます。多くの一般的な操作では、sum()、max() などの反復子もサポートされています。
言うまでもなく、イテレータには多くの利点があります:
1.「ストリーミング」データ処理方法によりメモリ消費量が削減されます:
例えば、ファイルを処理する場合、いきなりすべてのデータを取り出してメモリに入れて処理すると、プログラムが大量のメモリを消費し、場合によっては処理が不可能になることもあります。パーツごと:
2. XML ファイルを処理する場合:
組み込み関数 open によって返されるファイル オブジェクトと、etree.iterparse によってシリアル化される XML ツリーはどちらも反復可能なオブジェクトであり、ファイルの内容を段階的に処理できます。
3. データを消費するための for ステートメントの使用の利便性をサポートします。
配列、リスト、文字列などの Python の一般的な組み込み型はすべて反復可能な型であるため、ヒューマン ループでインデックス位置を記録することなく、for ステートメントの糖衣構文を使用してデータを簡単に利用できます。
ここでは、反復可能オブジェクトと反復子オブジェクトという 2 つの複雑な用語を紹介します。個人的には、これら 2 つの概念から始めると反復子をよりよく理解できると思います。例を示す前に、これら 2 つの概念について大まかに説明しましょう:
Iterator: 次のメソッドの実装が含まれており、正しい範囲内で予期されるデータを返します。また、範囲を超えた後に反復を停止するために StopIteration エラーをスローできます。
例を挙げて、読みながら言ってください:
リーリー
リーリー
データは確かに「ストリーミング」されています
リーリー
リーリー
リーリー