error in syntax description for comprehensions?

Terry Reedy tjreedy at udel.edu
Thu Mar 30 20:43:21 EDT 2017


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


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /