pairs from a list

Alan Isaac aisaac at american.edu
Tue Jan 22 13:09:39 EST 2008


Arnaud Delobelle wrote:
> pairs4 wins.


Oops. I see a smaller difference,
but yes, pairs4 wins.

Alan Isaac

import time
from itertools import islice, izip

x = range(500001)

def pairs1(x):
    return izip(islice(x,0,None,2),islice(x,1,None,2))

def pairs2(x):
    xiter = iter(x)
    while True:
        yield xiter.next(), xiter.next()

def pairs3(x):
    for i in range( len(x)//2 ):
        yield x[2*i], x[2*i+1],

def pairs4(x):
    xiter = iter(x)
    return izip(xiter,xiter)

t = time.clock()
for x1, x2 in pairs1(x):
    pass
t1 = time.clock() - t

t = time.clock()
for x1, x2 in pairs2(x):
    pass
t2 = time.clock() - t

t = time.clock()
for x1, x2 in pairs3(x):
    pass
t3 = time.clock() - t

t = time.clock()
for x1, x2 in pairs4(x):
    pass
t4 = time.clock() - t

print t1, t2, t3, t4

Output:
0.317524154606 1.13436847421 1.07100930426 0.262926712753



More information about the Python-list mailing list