5.2.5 ジェネレータ式

ジェネレータ式 (generator expression) とは、丸括弧を使ったコンパクトな ジェネレータ表記法です:

Download entire grammar as text.

ジェネレータ式は新たなジェネレータオブジェクトを生み出します。 ジェネレータ式は単一の式の後ろに少なくとも一つの for 節と、場合によりさらに複数のfor または if 節を 続けたものです。 新たなジェネレータが繰り返す値は、各for および if 節をブロックとして、左から右へとネストし、 その最内ブロックの中で式を評価した結果を出力しているものと みなせます。

ジェネレータ式の使う変数の評価は、ジェネレータオブジェクトに対して next() メソッドを呼び出すまで遅延されます。とはいえ、 もっとも左に位置する for 節はただちに評価されるため、 ジェネレータ式の最左 for 節のエラーは、ジェネレータ式を 使っているコードの他のエラーに先立って起きることがあります。 それ以後の for 節は、先行する for ループに 依存しているため、直ちには評価されません。

例: "(x*y for x in range(10) for y in bar(x))"

関数の唯一の引数として渡す場合には、丸括弧を省略できます。 詳しくは5.3.4 節を参照してください。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。