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』を読んで知った。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください