best cumulative sum

Peter Otten __peter__ at web.de
Thu Nov 24 09:45:43 CET 2005


Alan aka David Isaac wrote:

> "Peter Otten" <__peter__ at web.de> wrote in message
> news:dm2b8b$p8n$02$1 at news.t-online.com...
>> You are in for a surprise here:
> 
> You got that right!
> 
>> >>> def empty():
>> ...     for item in []:
>> ...             yield item
>> ...
>> >>> bool(empty())
>> True
> 
> Ouch.
> 
>> >>> bool(iter([]))
>> True # python 2.3 and probably 2.5
>>
>> >>> bool(iter([]))
>> False # python 2.4
> 
> Double ouch.
> I was relying on Python 2.4 behavior.
> What is the reasoning behind the changes?
> (Can you offer a URL to a discussion?)

Raymond Hettinger introduced an optimization that looked cool until it broke
some of Guido's code, see

http://mail.python.org/pipermail/python-dev/2005-September/056594.html

> So, is the only way to test for an empty iterable
> to see if it can generate an item?  I found this:
> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/413614
> Seems like a reason to rely on sequences ...

I'd rather have a second look whether the test is really needed.

Peter




More information about the Python-list mailing list