iter に関数を渡す
この記事は Python Tips Advent Calendar 2012 17日目の記事です。
iter 関数は、iterable オブジェクトから iterator を取り出す関数です。
>>> xs = [1,2,3] >>> it = iter(xs) >>> it.next() 1 >>> it.next() 2 >>> it.next() 3 >>> it.next() #doctest: +ELLIPSIS Traceback (most recent call last): ... StopIteration
このように iter 関数に iterable オブジェクトを渡すのが通常の使い方ですが、この iter 関数の引数には、関数も渡すことができます。
>>> import StringIO >>> msg = '''\ ... aaa ... bbb ... ccc ... ... eee ... ''' >>> strs = StringIO.StringIO(msg) >>> for line in iter(strs.readline, '\n'): # 空行が現れるまで読む ... print line[:-1] aaa bbb ccc
このように、第一引数に関数を、第二引数にその関数が何を返したら終了するかという条件を指定すると、その条件が現れるまで関数を呼び続けます。
.