イテレータ
「イテレータ(Iterator)」は、プログラム内でシーケンス(リスト、タプル、文字列など)やコレクション(リスト、セット、辞書など)の要素を逐次的に取り出すためのオブジェクトです。イテレータは通常、要素の集合に対してループを実行するために使用され、次の要素を取り出すたびに内部の状態を更新します。
イテレータは、次の2つの基本的なメソッドを持っています:
-
__iter__()メソッド:- このメソッドはイテレータ自体を返します。通常、このメソッドは単に
selfを返します。
- このメソッドはイテレータ自体を返します。通常、このメソッドは単に
-
__next__()メソッド:- このメソッドは次の要素を返します。要素がない場合、
StopIteration例外を発生させます。イテレータは内部の状態を保持し、次の要素を取得するたびに状態が進行します。
- このメソッドは次の要素を返します。要素がない場合、
Pythonでは、イテレータを作成するために以下の方法があります:
-
ジェネレータ関数:
- ジェネレータ関数を定義すると、その関数からジェネレータオブジェクトが作成されます。ジェネレータオブジェクトはイテレータとして機能し、
yieldキーワードを使用して逐次的に値を生成できます。
- ジェネレータ関数を定義すると、その関数からジェネレータオブジェクトが作成されます。ジェネレータオブジェクトはイテレータとして機能し、
-
iter()関数と__iter__()メソッドの実装:- クラス内で
__iter__()メソッドを実装し、そのメソッド内で自身を返すことで、クラスをイテレータとして使用できます。また、iter()関数を使用してイテレータオブジェクトを作成できます。
- クラス内で
以下はジェネレータ関数を使用したイテレータの例です:
python
def countdown(n): while n > 0: yield n n -= 1 # ジェネレータ関数からイテレータオブジェクトを作成 iterator = countdown(5) for num in iterator: print(num)
このコードでは、countdown 関数はジェネレータ関数であり、イテレータとして動作します。yield キーワードを使用して値を生成し、for ループでその値を逐次取り出して表示しています。

ディスカッション
コメント一覧
まだ、コメントがありません