Python のイテレータの最初の紹介
Jun 09, 2023 pm 09:46 PMPython は、使いやすさとコードの読みやすさに優れた高レベルのプログラミング言語です。 Python の組み込みデータ型は非常に強力で、その 1 つである Iterator も非常に重要なデータ型です。
イテレータは、コンテナ オブジェクトをトラバースできるオブジェクトであり、特定の実装を公開せずにコンテナ要素にアクセスするメソッドを提供できます。コンテナ オブジェクトは、リスト、タプル、辞書、セットなどです。イテレータは、コンテナ オブジェクトの現在位置およびトラバースに関連するその他の状態情報を保存する内部状態を維持します。コンテナ オブジェクトをトラバースする必要がある場合、イテレータを使用して要素を取得できます。
Python では、__iter__() メソッドと __next__() メソッドを実装している限り、任意のオブジェクトをイテレータにすることができます。 __iter__() メソッドはイテレータ オブジェクトを返し、現在のオブジェクトの添字を 0 に初期化します。__next__() メソッドは、コンテナ オブジェクト内の要素を返すために使用されます。要素を返せない場合は、StopIteration 例外がスローされます。以下は簡単な例です:
class MyIterator: def __init__(self, container): self.container = container self.index = 0 def __iter__(self): return self def __next__(self): if self.index >= len(self.container): raise StopIteration result = self.container[self.index] self.index += 1 return result my_list = [1, 2, 3] my_iterator = MyIterator(my_list) for item in my_iterator: print(item)
上記のコードでは、MyIterator という名前の反復子クラスをカスタマイズしました。 __iter__() メソッドと __next__() メソッドはこのクラスに実装されています。 __iter__() メソッドは現在のオブジェクトの反復子オブジェクト self を返しますが、__next__() メソッドはコンテナ オブジェクト my_list 内の要素を返すために使用されます。すべての要素が走査されると、StopIteration 例外がスローされ、反復が終了します。
Python では、イテレータはコンテナ オブジェクト内の要素を走査できるだけでなく、メモリとコンピューティング リソースを節約し、プログラムのパフォーマンスを向上させることができるため、非常に一般的に使用されます。一般的に使用される組み込みイテレータ関数とステートメントを次に示します。
- iter() 関数: 反復可能なオブジェクトをイテレータの戻り値に変換します。
my_list = [1, 2, 3] my_iterator = iter(my_list) # 将列表对象转化为迭代器对象 for item in my_iterator: print(item)
- next() 関数: イテレータの __next__() メソッドを呼び出して、コンテナ オブジェクト内の次の要素を取得します。
my_list = [1, 2, 3] my_iterator = iter(my_list) # 将列表对象转化为迭代器对象 print(next(my_iterator)) # 输出1 print(next(my_iterator)) # 输出2 print(next(my_iterator)) # 输出3
- enumerate() 関数: 添字と要素の両方を返します。
my_list = ['apple', 'banana', 'orange'] for index, item in enumerate(my_list): print(index, item) # 输出: 0 apple # 1 banana # 2 orange
- zip() 関数: 複数の反復子または反復可能オブジェクトをタプルに返します。
my_list1 = ['apple', 'banana', 'orange'] my_list2 = [1, 2, 3] for item in zip(my_list1, my_list2): print(item) # 输出: ('apple', 1) # ('banana', 2) # ('orange', 3)
- in ステートメント: 要素がコンテナ オブジェクト内にあるかどうかを判断するために使用されます。
my_list = [1, 2, 3] if 2 in my_list: print("2 is in my_list") else: print("2 is not in my_list") # 输出: 2 is in my_list
実際のプログラミングでは、コンテナ オブジェクトを走査する必要がある場合は、反復子を使用して走査し、添字参照を直接使用して要素を取得することは避けてください。メモリとコンピューティング リソースの無駄が発生するため、プログラムのパフォーマンスが低下します。イテレータの特徴は、オンデマンドで要素を生成し、オンデマンドでメモリを解放することであるため、大規模なデータセットを処理する場合、イテレータを使用するとプログラムの効率が大幅に向上します。
一般に、イテレータは Python において非常に重要な概念です。効率的で簡潔で保守しやすいプログラムを作成するには、その実装と一般的な構文を理解し、イテレータの使用スキルを習得する必要があります。
以上がPython のイテレータの最初の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表

わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する
