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?