2011/09/03

python iteratorとgeneratorについて

最近、pythonを勉強中でして基本的な使い方はわかってきましたが、いかんせん組み込み関数のメカニズムがわからない点が多いです。

今回はiterator(イテレータ)とgenerator(ジェネレータ)について。

★iteratorとは
wikipediaではiteratortとは、
プログラミング言語において配列やそれに類似するデータ 構造の各要素に対する繰返し処理の抽象化
のことだそうです。
実際のところ、リストや文字列などの要素を1つずつ繰り返し抽出する機能のようです。
※表現が間違っていたらすみません。


★iteratorのサンプル
下記2つのサンプルは同じことをやっています。
※pythonのバージョンは2.7


d = [1,2,3,4]
#for文を使う
for i in d:
 print i


#iter関数を使う
it = iter(d)
next(i) #1
next(i) #2
・・・

★iteratorのメカニズム
python.jpのチュートリアルに記載されているとおり、forコンテナオブジェクトのiter関数を呼び出し、next関数で定義されたイテレータオブジェクト(抽出したデータ)を返します。

★generatorとは
python.jpのチュートリアルでは、generatorを
イテレータを作成するための簡潔で強力なツール
と説明されています。
メカニズムについても明記されているので、ちゃんと理解すればかなり使えるでしょう。
こういったツールがpythonらしいのかもしれませんね。



エキスパ-トPythonプログラミング
エキスパ-トPythonプログラミング
著者:タレク・ジアデ
価格:3,780円(税込、送料込)
楽天ブックスで詳細を見る
スポンサーリンク

スポンサーリンク