Steve Holden a écrit : > [EMAIL PROTECTED] 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) -- http://mail.python.org/mailman/listinfo/python-list