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.## Advertising

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.`

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