Em Qua, 2006-04-05 às 19:15 -0700, Alex Martelli escreveu: > Steve R. Hastings <[EMAIL PROTECTED]> wrote: > ... > > Actually, for many uses of "for i in (range|xrange)", you only need the > > value of i, and you aren't doing anything with the integer object. You > > Then, the speediest approach may be completely different: > > import itertools > > for i in itertools.repeat(None, N): > ... > > > Remember, when you're thinking "blazing speed", think itertools.
Hmmm... >>> min(Timer('for i in xrange(100000): pass').repeat(3, 1000)) 6.7740321159362793 >>> min(Timer('for i in itertools.repeat(None, 100000): pass', setup='import itertools').repeat(3, 1000)) 5.6378099918365479 >>> min(Timer('for i in xrange(100): pass').repeat(3, 1000)) 0.0071630477905273438 >>> min(Timer('for i in itertools.repeat(None, 100): pass', setup='import itertools').repeat(3, 1000)) 0.0065851211547851562 It *is* faster, but by a small margin. Considering that it is IMHO less readable, I'd use it just for *very* big loops, or in functions in hotspots. Anyway, it's always good to remember about itertools, it's a great module that some people don't even know. Cheers, -- Felipe. -- http://mail.python.org/mailman/listinfo/python-list