Larry Bates <[EMAIL PROTECTED]> wrote:

> Note: if lists are long take a look at itertools izip.  zip creates
> a list of lists which could take lots of memory/time if they are VERY
> large.  itertools izip iterates over them in place.

That's interesting. I was going to quibble with the assertion that zip 
could take lots of time, since on the face of it a loop using izip packs 
and unpacks just as many tuples. Fortunately I tried it out before claiming 
that zip would be just as fast :)

It would appear that even for short sequences the izip solution is faster. 
My guess would be it is because the same tuple objects are being reused in 
the izip version.

C:\Python25\Lib>timeit.py -s "a, b, c = [range(1000)]*3" -s "from itertools 
import izip" "for p,q,r in izip(a,b,c): pass"
10000 loops, best of 3: 131 usec per loop

C:\Python25\Lib>timeit.py -s "a, b, c = [range(1000)]*3" "for p,q,r in 
zip(a,b,c): pass"
1000 loops, best of 3: 212 usec per loop

C:\Python25\Lib>timeit.py -s "a, b, c = [range(100)]*3" -s "from itertools 
import izip" "for p,q,r in izip(a,b,c): pass"

100000 loops, best of 3: 13.9 usec per loop

C:\Python25\Lib>timeit.py -s "a, b, c = [range(100)]*3" "for p,q,r in 
zip(a,b,c): pass"
10000 loops, best of 3: 22.6 usec per loop

C:\Python25\Lib>timeit.py -s "a, b, c = [range(10)]*3" -s "from itertools 
import izip" "for p,q,r in izip(a,b,c): pass"
100000 loops, best of 3: 2.21 usec per loop

C:\Python25\Lib>timeit.py -s "a, b, c = [range(10)]*3" "for p,q,r in 
zip(a,b,c): pass"
100000 loops, best of 3: 3.52 usec per loop
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to