iterating "by twos"

George Trojan george.trojan at noaa.gov
Tue Jul 29 13:58:05 EDT 2008


kj wrote:
> Is there a special pythonic idiom for iterating over a list (or
> tuple) two elements at a time?
> 
> I mean, other than
> 
> for i in range(0, len(a), 2):
>     frobnicate(a[i], a[i+1])
> 
> ?
> 
> I think I once saw something like
> 
> for (x, y) in forgotten_expression_using(a):
>     frobnicate(x, y)
> 
> Or maybe I just dreamt it!  :)
> 
> Thanks!
I saw the same thing, forgot where though. But I put it in my library. 
Here it is:

# x.py
import itertools

def pairs(seq):
     is1 = itertools.islice(iter(seq), 0, None, 2)
     is2 = itertools.islice(iter(seq), 1, None, 2)
     return itertools.izip(is1, is2)

s = range(9)
for x, y in pairs(s):
     print x, y

dilbert at trojan> python x.py
0 1
2 3
4 5
6 7



More information about the Python-list mailing list