[Python-ideas] Integrate some itertools into the Python syntax

Michael Selik mike at selik.org
Wed Mar 23 18:18:26 EDT 2016


On Wed, Mar 23, 2016, 5:55 PM Sven R. Kunze <srkunze at mail.de> wrote:

>
>
> On 23.03.2016 22:44, Michael Selik wrote:
>
>
>
> On Wed, Mar 23, 2016, 5:27 PM João Bernardo < <jbvsmo at gmail.com>
> jbvsmo at gmail.com> wrote:
>
>> On Mon, Mar 21, 2016 at 8:06 PM, Michel Desmoulin <
>> <desmoulinmichel at gmail.com>desmoulinmichel at gmail.com> wrote:
>>
>>> Itertools is great, and some functions in it are more used than others:
>>>
>>> - islice;
>>> - chain;
>>> - dropwhile, takewhile;
>>>
>>
>> I like how dropwhile and takewhile could be easily integrated with list
>> comprehensions / generator expressions:
>>
>> [x for x in range(10) while x < 5]      # takewhile
>> [x for x in range(10) not while x < 5]  # dropwhile
>> [x for x in range(10) from x >= 5]      # forward thinking dropwhile
>>
>> I believe this is almost plain english without creating new keywords.
>>
>
> They read well, except for the square brackets which to me imply consuming
> the entire iterator. Itertools takewhile will early exit, possibly leaving
> some values on the iterator. If these do consume the entire iterator,
> what's the difference with the ``if`` clause in a comprehension?
>
>
> But isn't that their purpose? Not consuming. I think that would be easy to
> learn. +1 on this proposal.
>
> This could also prove useful to avoid for-else. :-)
>

After the execution of the list comprehension using "while" if the
condition triggered halfway, would there be anything left in the original
iterator? If it was a generator expression, we'd say "Yes" immediately. As
a list comprehension, I'm not sure.

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160323/8f11bc89/attachment.html>


More information about the Python-ideas mailing list