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]

it works exactly as specified:

>>> help(itertools.dropwhile)
Help on class dropwhile in module itertools:

class dropwhile(__builtin__.object)
 |  dropwhile(predicate, iterable) --> dropwhile object
 |
 |  Drop items from the iterable while predicate(item) is true.
 |  Afterwards, return every element until the iterable is exhausted.

>>> 2<0<5
False

maybe you meant to use itertools.ifilter?

>>> help(itertools.ifilter)
Help on class ifilter in module itertools:

class ifilter(__builtin__.object)
 |  ifilter(function or None, sequence) --> ifilter object
 |
 |  Return those items of sequence for which function(item) is true.
 |  If function is None, return the items that are true.

>>> list(itertools.ifilter(lambda x: x<5,range(10)))
[0, 1, 2, 3, 4]
>>> list(itertools.ifilter(lambda x: 2<x<5,range(10)))
[3, 4]

</F>

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to