イテレータ

イテレータとは?
日本語では「反復子」などと訳される。
配列のような幾つかの値が並んでいるデータに対して値のひとつを指し、表示したり、次の値に進むなどの機能をもつ。
まぁ、実際に使ってみる方が解りやすい。

Pythonの組み込みデータ型(リスト、タプル、辞書)オブジェクトは、イテレータを作る__iter__メソッドを持つ。
(__iter__メソッドの戻り値はnextメソッドを持つオブジェクト)
これらはfor構文などで利用できる。

>>> ========================= RESTART =========================
>>> a = [0, 1, 2, 3, 4]
>>> for count in a:
	print count

	
0
1
2
3
4
>>> type(a)

>>> type(a.__iter__)

>>> type(a.__iter__())

>>> b = a.__iter__()        #a.__iter__()の戻り値を変数bに入れる
>>> type(b)

>>> print b

>>> b.next()
0
>>> b.next()
1
>>> b.next()
2
>>> b.next()
3
>>> b.next()
4
>>> b.next()
>>> a = ("test", "テスト", "てすと")
>>> for string in a:
	print string

	
test
テスト
てすと
>>> b = a.__iter__()
>>> b.next()
'test'
>>> b.next()
'テスト'
>>> b.next()
'てすと'
    
辞書に関してはイテレータを使用するためのメソッドが3つある。
>>> ========================= RESTART =========================
>>> a = {"blue":"青", "red":"赤", "black":"黒"}
>>> for key, value in a.iteritems():
	print "key =", key
	print "value =", value

	
key = blue
value = 青
key = black
value = 黒
key = red
value = 赤
>>> for i in a.itervalues():
	print "value =", i

	
value = 青
value = 黒
value = 赤
>>> for i in a.iterkeys():
	print "key =", i

	
key = blue
key = black
key = red
>>> for i in a:			#暗黙的に.iterkeys()が使われる
	print "key =", i

	
key = blue
key = black
key = red
    
fileオブジェクトもイテレーターに対応している。
123456789
qwertyuiop
asdfghjkl
zxcvbnm
上記内容をtest.txtに保存したら、Python Shell上で以下を実行
>>> ========================= RESTART =========================
>>>for line in open("test.txt"):
        print line,

123456789
qwertyuiop
asdfghjkl
zxcvbnm
    
参考:9.8 イテレータ (iterator) http://www.python.jp/doc/release/tut/node11.html#SECTION0011800000000000000000