4 リスト表現

リスト表現は、角括弧で囲われた式の系列です。系列は空の系列であっても かまいません:

test ::= and_test ( "or" and_test )* | lambda_form
testlist ::= test ( "," test )* [ "," ]
list_display ::= "[" [listmaker] "]"
listmaker ::= expression ( list_for | ( "," expression )* [","] )
list_iter ::= list_for | list_if
list_for ::= "for" expression_list "in" testlist [list_iter]
list_if ::= "if" test [list_iter]
Download entire grammar as text.

リスト表現は、新に作成されたリストオブジェクトを表します。 新たなリストの内容は、式のリストを与えるか、リストの内包表記 (list comprehension) で指定します。 カンマで区切られた式のリストを与えた場合、リストの各要素は左から 右へと順に評価され、評価された順番にリスト内に配置されます。 リストの内包表記を与える場合、内包表記はまず単一の式、続いて 少なくとも一つの for 節、続いてゼロ個以上の for 節か、if 節になります。 この場合、新たに作成されるリストの各要素は、各々の forif 節を左から右の順にネストしたブロックとみなして実行し、 ネストの最内ブロックに到達する度に式を評価した値となります。 4



Footnotes

... ネストの最内ブロックに到達する度に式を評価した値となります。4
Python 2.3 では、リスト内包が "for" の中で使う制御 変数を内包表記を書いたスコープに「漏らして」しまう仕様になって いました。この挙動は撤廃されたので、将来のバージョンでバグが修正 されれば、この挙動に依存したコードは動作しなくなります。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。