On 23.03.2016 22:44, Michael Selik wrote:


On Wed, Mar 23, 2016, 5:27 PM Joćo Bernardo <jbvsmo@gmail.com> wrote:
On Mon, Mar 21, 2016 at 8:06 PM, Michel Desmoulin <desmoulinmichel@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. :-)

Best,
Sven