イテレータとは、データ構造の各要素にアクセスするための処理の抽象化のこと。Python2.2以降で利用できる。
Python2.2以降では、forループの対象はイテレータを記述する。但し、リストやディクショナリはイテレータに自動変換されるので、そのまま記述できる。
1 2 | for 変数 in イテレータ: pass |
イテレータでループ
iter関数でイテレータを取り出し、そのイテレータを使ってループを実行する例
1 2 3 4 5 6 7 8 9 10 11 | >>> i = iter([1,2,3,4,5]) >>> i <listiterator object at 0x0000000002323F98> >>> for num in i: ... num ... 1 2 3 4 5 |
forループ実行時の内部挙動
forループを実行する際には、内部でnextメソッドが呼び出されている。要素がなくなると、StopIteration例外が発生する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | >>> i = iter([1,2,3,4,5]) >>> i.next() 1 >>> i.next() 2 >>> i.next() 3 >>> i.next() 4 >>> i.next() 5 >>> i.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration |