Typo in itertools.dropwhile()
Hi, There seems to be a typo in the doc of itertools.dropwhile() : Make an iterator that drops elements from the iterable as long as the predicate is true; afterwards, returns every element. Note, the iterator does not produce *any* output until the predicate is true, so it may have a lengthy start-up time. It says something and then the opposite, so which one is true ? Matthieu
[Matthieu on itertools.dropwhile() docs]
Make an iterator that drops elements from the iterable as long as the predicate is true; afterwards, returns every element. Note, the iterator does not produce any output until the predicate is true, so it may have a lengthy start-up time.
It says something and then the opposite, so which one is true ?
It is correct as written. Given a sequence where predicate is true 1000 times and then alternately false and true, it returns the part that is alternately false and true. So, it did DROP (omit, not return, skip-over, etc) the first 1000 true items and it did return EVERY element from the first false to the end. It did not produce any output for the first 1000 inputs so it took a while to get to the first output (the first false). Hope that clears it up for you. Raymond
2007/7/13, Raymond Hettinger
Make an iterator that drops elements from the iterable as long as the
[Matthieu on itertools.dropwhile() docs] predicate is true; afterwards, returns every element. Note,
the iterator does not produce any output until the predicate is true, so it may have a lengthy start-up time.
It says something and then the opposite, so which one is true ?
It is correct as written. Given a sequence where predicate is true 1000 times and then alternately false and true, it returns the part that is alternately false and true. So, it did DROP (omit, not return, skip-over, etc) the first 1000 true items and it did return EVERY element from the first false to the end. It did not produce any output for the first 1000 inputs so it took a while to get to the first output (the first false). Hope that clears it up for you.
Hi, Thanks for the answer. I agree with you, but this explains the first sentence. The second says that nothing is output until the predicate is true. It should say" while the predicate is true" or "until the predicate is false". But I could be misunderstand 'until' as well (English is not my mother tongue, but still...) Matthieu
Raymond Hettinger writes:
[Matthieu on itertools.dropwhile() docs]
Note, the iterator does not produce any output until the predicate is true
it did return EVERY element from the first false
Shouldn't the "until" in the doc be "while"? Alternatively, "true" could be changed to "false".
"Stephen J. Turnbull"
Actually, I think it *is* a typo: the last part should read that no
output is produced until the predicate becomes *false*.
- C
On 7/13/07, Raymond Hettinger
Make an iterator that drops elements from the iterable as long as the
[Matthieu on itertools.dropwhile() docs] predicate is true; afterwards, returns every element. Note,
the iterator does not produce any output until the predicate is true, so it may have a lengthy start-up time.
It says something and then the opposite, so which one is true ?
It is correct as written. Given a sequence where predicate is true 1000 times and then alternately false and true, it returns the part that is alternately false and true. So, it did DROP (omit, not return, skip-over, etc) the first 1000 true items and it did return EVERY element from the first false to the end. It did not produce any output for the first 1000 inputs so it took a while to get to the first output (the first false). Hope that clears it up for you.
Raymond _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/shiblon%40gmail.com
participants (5)
-
Chris Monson
-
Matthieu Brucher
-
Raymond Hettinger
-
Stephen J. Turnbull
-
Terry Reedy