generator expressions: performance anomaly?

Nick Coghlan ncoghlan at iinet.net.au
Tue Jan 18 10:10:01 CET 2005


Raymond Hettinger wrote:
> [Delaney, Timothy C]
> 
>>Nick's other suggestion - that genexps propagate __len__ - might
>>still be interesting. Of course, it would only be applicable for
>>unconditional genexps(i.e. no if clause).
> 
> Length transparency for iterators is not as general as one would expect.  I once
> spent a good deal of effort exploring where it made sense, and I was surprised
> to find that it only rarely works out.  Length transparency is an unexpectedly
> thorny subject with many dead-ends which precludes a fully general solution such
> as that proposed by Nick.
> 
> For a recap of my research, see the docstring for Lib/test/test_iterlen.py .

"""The situation slightly more involved whenever an object allows length 
mutation during iteration. """

Ouch. Nice understatement.

It's rather unfortunate that we can't make use of the length information even 
when the source *doesn't* mutate, though. I'll have to think some more to see if 
I can come up with any concrete ideas for you to shoot down :)

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at email.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://boredomandlaziness.skystorm.net



More information about the Python-list mailing list