Pythonのジェネレータ式

Pythonのジェネレータ式 | 山本隆の開発日誌」より。

Pythonにはリスト内包表記とよく似た表記のジェネレータ式がある。

リスト内包表記はリストを返す。

>>> [ x ** 2 for x in range(4)]
[0, 1, 4, 9]

ジェネレータ式は反復処理可能なオブジェクト「ジェネレータオブジェクト」を返す。

>>> ( x ** 2 for x in range(4))
<generator object at 0x00AB0648>

ジェネレータオブジェクトは、イテレータプロトコルをサポートしている。

>>> g = ( x ** 2 for x in range(4))
>>> g.next()
0
>>> g.next()
1
>>> g.next()
4
>>> g.next()
9
>>> g.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration

ということを、『初めてのPython』を読んで知った。