実録 はじめての…《20》デザインパターン〈GoF〉Iterator(補足)
実録:はじめてのプログラミング《記事一覧》
《》デザインパターン〈GoF〉Iterator(補足)
[Python]デザインパターン〈GoF〉Iterator(補足)
《関連記事》
メソッド __iter__ は、基本構文 for..in や組み込み関数などに呼応して、各要素を参照する手段を提供します。すると、デザインパターン〈GoF〉Iterator の効用が、さまざまな状況で得られます。
>>> 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 を参照できます。