dict.items() vs dict.iteritems and similar questions

Bruno Desthuilliers bruno.42.desthuilliers at wtf.websiteburo.oops.com
Thu Mar 15 08:58:35 EDT 2007


Steve Holden a écrit :
> bearophileHUGS at lycos.com wrote:
>> Laurent Pointal:
>>> you may prefer range/items when processing of the result
>>> value explicitly need a list (ex. calculate its length)
>>
>> Creating a very long list just to know the len of an iterator is
>> barbaric, so sometimes I use this:
>>
>> def leniter(iterator):
>>     if hasattr(iterator, "__len__"):
>>         return len(iterator)
>>     nelements = 0
>>     for _ in iterator:
>>         nelements += 1
>>     return nelements
>>
> Of course this is a little like the Heisenberg uncertainty principle if 
> the iterator has no __len__ attribute - once you know how long it is you 
> no longer have access to the elements. Or did I miss something?

yes, that's one of the side effects. Another interesting case:

import itertools
it = itertools.cycle(range(10))
print "it has %d elements" % leniter(it)





More information about the Python-list mailing list