itertools モジュール(1)

先週ちょっと紹介したitertoolsモジュールを少しずつ見ていくことにしよう。

 cf. http://docs.python.jp/2.7/library/itertools.html

無限イテレータ

まずは、itertools.count。初期値から1ずつカウントアップしていく。

>>> for i in itertools.count(0):
...     if i > 10:
...         break
...     print i
...
0
1
2
3
4
5
6
7
8
9
10

第2引数にステップを指定することも可能。

>>> for i in itertools.count(0, 3):
...     if i > 10:
...         break
...     print i
...
0
3
6
9

itertolls.cycle はシーケンスを無限に繰り返す。

>>> i = 0
>>> for x in itertools.cycle(['foo', 'bar', 'baz']):
...     i += 1
...     if i > 10:
...         break
...     print x
...
foo
bar
baz
foo
bar
baz
foo
bar
baz
foo

itertools.repeat は、オブジェクトを無限に繰り返す。

>>> i = 0
>>> for x in itertools.repeat("Hello"):
...     i += 1
...     if i > 10:
...         break
...     print x
...
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello

第2引数に回数を指定することも可能。

>>> for x in itertools.repeat("hello", 5):
...     print x
...
hello
hello
hello
hello
hello

itertools の関数は数が多いので今日はここまで。