Proposed new syntax

MRAB python at mrabarnett.plus.com
Thu Aug 10 13:18:24 EDT 2017


On 2017-08-10 15:28, Steve D'Aprano wrote:
> Every few years, the following syntax comes up for discussion, with some people
> saying it isn't obvious what it would do, and others disagreeing and saying
> that it is obvious. So I thought I'd do an informal survey.
> 
> What would you expect this syntax to return?
> 
> [x + 1 for x in (0, 1, 2, 999, 3, 4) while x < 5]
> 
> 
> For comparison, what would you expect this to return? (Without actually trying
> it, thank you.)
> 
> [x + 1 for x in (0, 1, 2, 999, 3, 4) if x < 5]
> 
> 
> 
> How about these?
> 
> [x + y for x in (0, 1, 2, 999, 3, 4) while x < 5 for y in (100, 200)]
> 
> [x + y for x in (0, 1, 2, 999, 3, 4) if x < 5 for y in (100, 200)]
> 
> 
> 
> Thanks for your comments!
> 
There's a subtlety there.

Initially I would've thought that the 'while' would terminate the 
iteration of the preceding 'for', but then when I thought about how I 
would expand it into multiple lines, I realised that the 'while' would 
have to be expanded to "if x < 5: break", not an inner 'while' loop.



More information about the Python-list mailing list