平方数の無限リスト(っぽいもの)を作る
itertoolsモジュールのcountを使えば整数を無限に生成できる。countを使って例えば平方数を無限に生成しようとする。ビルトインのmapは有限のシーケンスに対してのみ動作するので、要素数に限りがないcountに適用することはできない。このような場合にはitertoolsの他の関数が役に立つ。
import itertools squares = itertools.imap(lambda x:x*x, itertools.count(1)) # 使用例:10000以下の平方数のリストを作る print list(itertools.takewhile(lambda n:n<10000, squares))
今回使用したimapやtakewhileを含め、itertoolsの関数の多くはiterableなオブジェクトを返すだけなので、特定要素に複数回アクセスする場合などはlistやtupleで実体化する必要があるので注意。