Подумал, что это хорошее место, чтобы поделиться своим обобщением этого при n> 2, который является просто скользящим окном над итерируемым:
def sliding_window(iterable, n):
its = [ itertools.islice(iter, i, None)
for i, iter
in enumerate(itertools.tee(iterable, n)) ]
return itertools.izip(*its)