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