dropwhile question
Scott David Daniels
Scott.Daniels at Acm.Org
Sat Aug 23 18:41:36 EDT 2008
Rajanikanth Jammalamadaka wrote:
>>>> list(itertools.dropwhile(lambda x: x<5,range(10)))
> [5, 6, 7, 8, 9]
>
> Why doesn't this work?
>>>> list(itertools.dropwhile(lambda x: 2<x<5,range(10)))
> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Because it drops _while_ the condition is True (which it is for
the first 0 entries in the sequence). What you want is:
list(x for x in range(10) if 2 < x < 5)
Note that:
list(itertools.dropwhile(lambda x: x<5, range(10)+range(10)))
is [5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
not [5, 6, 7, 8, 9, 5, 6, 7, 8, 9].
--Scott David Daniels
Scott.Daniels.Acm.Org
More information about the Python-list
mailing list