Proposed new syntax

Jussi Piitulainen jussi.piitulainen at helsinki.fi
Thu Aug 10 15:11:47 EDT 2017


MRAB writes:
> 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.

I wonder how such expansions would work in general.
[x + y for x in (0, 1, 2, 999, 3, 4) for y in (100, 200) while x < 5]
[x + y for x in (0, 1, 2, 999, 3, 4) for y in (100, 200) while x < y]


More information about the Python-list mailing list

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