実録 はじめての…《20》デザインパターン〈GoF〉Iterator(補足)

《前の記事|記事一覧|次の記事》
Python.use(better)


実録:はじめてのプログラミング《20》


実録:はじめてのプログラミング記事一覧
《》デザインパターンGoFIterator(補足)

《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 更新♪2009/02/17

[Python]デザインパターンGoFIterator(補足)
《関連記事》

メソッド __iter__ は、基本構文 for..in や組み込み関数などに呼応して、各要素を参照する手段を提供します。すると、デザインパターンGoFIterator の効用が、さまざまな状況で得られます。

>>> myList("ABC")
['A', 'B', 'C']

連結リスト myList は、このような要素(長さ1の文字列)を保持しています。

>>> for e in myList("ABC"): print e,

A B C

基本構文 for/in を利用して、連結リスト myList の各要素 e を参照できます。

>>> for i,e in enumerate(myList("ABC")): print i,e

0 A
1 B
2 C

《Release 2.3.5》組み込み関数 enumerate を利用すると、連結リスト myList の各要素 e に対してオフセット位置 i が得られます。

>>> reduce(lambda acc,e: e+acc, myList("ABC"), "")
'CBA'

《Release 1.5.2》組み込み関数 reduce を利用すると、連結リスト myList の各要素 e をもとに、逆順に並べた文字列 'CBA' が得られます。

>>> map(lambda e: ord(e), myList("ABC"))
[65, 66, 67]

《Release 1.5.2》組み込み関数 map を利用すると、連結リスト myList の各要素 e をもとに、各文字の ASCII コード値を並べたリストが得られます。

>>> filter(lambda e: ord(e)%2, myList("ABC"))
['A', 'C']

《Release 1.5.2》組み込み関数 filter を利用すると、連結リスト myList の各要素 e をもとに、条件式 ord(e)%2 を満たす要素だけを並べたリストが得られます。

>>> for e1,e2 in zip(myList("ABC"),myList("123")): print e1,e2

A 1
B 2
C 3

《Release 2.0.1》組み込み関数 zip を利用すると、同じオフセット位置にある2つの連結リスト myList の各要素 e1,e2 を参照できます。