# 15 `itertools` -- 効率的なループ実行のためのイテレータ生成関数

バージョン 2.3 で 新たに追加 された仕様です。

このモジュールではイテレータを構築する部品を実装しています。プログラム言 語HaskellとSMLからアイデアを得ていますが、Pythonに適した形に修正されてい ます。

このモジュールは、高速でメモリ効率に優れ、単独でも組み合わせても使用する ことのできるツールを標準化したものです。標準化により、多数の個人が、それ ぞれの好みと命名規約で、それぞれ少しだけ異なる実装を行う為に発生する可読 性と信頼性の問題を軽減する事ができます。

ここで定義したツールは簡単に組み合わせて使用することができるようになって おり、アプリケーション固有のツールを簡潔かつ効率的に作成する事ができます。

例えば、SMLの作表ツール`tabulate(f)`は`f(0), f(1), ...`のシー ケンスを作成します。このツールボックスでは`imap()`と `count()`を用意しており、この二つを組み合わせて `imap(f, count())`とすれば同じ結果を得る事ができます。

同様に、`operator`モジュールの高速な関数とも一緒に使用すること ができるようになっています。

他にこのモジュールに追加したい基本的な構築部品があれば、開発者に提案して ください。

イテレータを使用すると、Python で書いてもコンパイル言語で書いても リストを使用した同じ処理よりメモリ効率がよく、高速になります。 これはデータをメモリ上に ``在庫''しておくのではなく、 必要に応じて作成する注文生産方式を採用しているためです。

イテレータによるパフォーマンス上のメリットは、要素の数が増えるにつれてよ り明確になります。一定以上の要素を持つリストでは、メモリキャッシュのパフ ォーマンスに対する影響が大きく、実行速度が低下します。

参考:

The Standard ML Basis Library, The Standard ML Basis Library.

Haskell, A Purely Functional Language, Definition of Haskell and the Standard Libraries.