イテレータ(iterator)

土曜日, 1月 15th, 2011 by

イテレータとは、データ構造の各要素にアクセスするための処理の抽象化のこと。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

Facebook comments:

comments

Leave a Reply


Get Adobe Flash player
single