There's one in an old version of the Python docs with
from itertools import islice def window(seq, n=2): "Returns a sliding window (of width n) over data from the iterable" " s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ... " it = iter(seq) result = tuple(islice(it, n)) if len(result) == n: yield result for elem in it: result = result[1:] + (elem,) yield result
The one from the docs is a little more succinct and uses
itertools to greater effect I imagine.
~ Answered on 2011-07-25 21:47:10