イテレータ
イテレータとは?
日本語では「反復子」などと訳される。
配列のような幾つかの値が並んでいるデータに対して値のひとつを指し、表示したり、次の値に進むなどの機能をもつ。
まぁ、実際に使ってみる方が解りやすい。
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 = redfileオブジェクトもイテレーターに対応している。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