On Wed, Aug 5, 2015 at 5:03 PM, Pavel S <pa...@schon.cz> wrote: > It seems this is allowed by the grammar: > > list_display ::= "[" [expression_list | list_comprehension] "]" > list_comprehension ::= expression list_for > list_for ::= "for" target_list "in" old_expression_list > [list_iter] > old_expression_list ::= old_expression [("," old_expression)+ [","]] > old_expression ::= or_test | old_lambda_expr > list_iter ::= list_for | list_if > list_if ::= "if" old_expression [list_iter] > > So chaining multiple ifs is fine: > > [ i for i in range(10) if True if True if True if True ]
Yep. A chain of 'if' clauses isn't materially different from a single 'if' with a bunch of 'and' checks, but if you alternate 'if' and 'for' clauses, you get a comprehension that conditionally nests its iterations. ChrisA -- https://mail.python.org/mailman/listinfo/python-list