My favorite way to do it:
def pairwise(t):
it = iter(t)
return zip(it,it)
# for "pairs" of any length
def chunkwise(t, size=2):
it = iter(t)
return zip(*[it]*size)
When you want to pair all elements you obviously might need a fillvalue:
from itertools import izip_longest
def blockwise(t, size=2, fillvalue=None):
it = iter(t)
return izip_longest(*[it]*size, fillvalue=fillvalue)
With Python 3, itertools.izip
is now simply zip
.. to work with an older Python, use
from itertools import izip as zip