dropwhile question

  • Thread starter Rajanikanth Jammalamadaka
  • Start date
R

Rajanikanth Jammalamadaka

list(itertools.dropwhile(lambda x: x<5,range(10)))
[5, 6, 7, 8, 9]

Why doesn't this work?[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Thanks,

Raj

--
"For him who has conquered the mind, the mind is the best of friends;
but for one who has failed to do so, his very mind will be the
greatest enemy."

Rajanikanth
 
M

Marc 'BlackJack' Rintsch

[5, 6, 7, 8, 9]

Why doesn't this work?[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

It *does* work. `dropwhile()` drops as long as the callable returns a
true value and then it stops dropping. First value is 0 and
``2 < 0 < 5`` is `False` so nothing is dropped.

What have you expected?

Ciao,
Marc 'BlackJack' Rintsch
 
R

Rajanikanth Jammalamadaka

Thanks for the explanations.

Regards,

Raj

Rajanikanth said:
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



--
"For him who has conquered the mind, the mind is the best of friends;
but for one who has failed to do so, his very mind will be the
greatest enemy."

Rajanikanth
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,431
Messages
2,571,678
Members
48,796
Latest member
Greg L.

Latest Threads

Top