dropwhile question

Fredrik Lundh fredrik at pythonware.com
Sun Aug 24 00:14:47 CEST 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]

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>




More information about the Python-list mailing list