On 3/30/2017 4:57 PM, Boylan, Ross wrote:
https://docs.python.org/3/reference/expressions.html#displays-for-lists-sets-and-dictionaries
describes the syntax for comprehensions as
comprehension ::=  expression comp_for
comp_for      ::=  [ASYNC] "for" target_list "in" or_test [comp_iter]
comp_iter     ::=  comp_for | comp_if
comp_if       ::=  "if" expression_nocond [comp_iter]

Is the comp_for missing an argument after "in"?

The or_test *is* the 'argument'.

One has to follow the definition of or_test and its components,
> but I can't find anything that results to a single variable
> or expression.

An or_test *is* a single expression. Like all python expressions, it evaluates to a python object. In this case, the object is passed to iter() and so the object must be an iterable.

>>> a, b = None, range(3)
>>> a or b
range(0, 3)
>>> for i in a or b: print(i)

0
1
2

--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to