##
5.2.4 List displays

A list display is a possibly empty series of expressions enclosed in square brackets:

  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.

A list display yields a new list object. Its contents are specified by providing either a list of expressions or a list comprehension. When a comma-separated list of expressions is supplied, its elements are evaluated from left to right and placed into the list object in that order. When a list comprehension is supplied, it consists of a single expression followed by at least one `for` clause and zero or more `for` or `if` clauses. In this case, the elements of the new list are those that would be produced by considering each of the `for` or `if` clauses a block, nesting from left to right, and evaluating the expression to produce a list element each time the innermost block is reached5.1.

#### Footnotes

... reached5.1
  In Python 2.3, a list comprehension "leaks" the control variables of each "`for`" it contains into the containing scope. However, this behavior is deprecated, and relying on it will not work once this bug is fixed in a future release