Rolling or sliding window iterator in Python
<p>I need a rolling window (aka sliding window) iterable over a sequence/iterator/generator.  Default Python iteration can be considered a special case, where the window length is 1.  I'm currently using the following code.  Does anyone have a more Pythonic, less verbose, or more efficient method for doing this?</p>

<pre><code>def rolling_window(seq, window_size):
    it = iter(seq)
    win = [it.next() for cnt in xrange(window_size)] # First window
    yield win
    for e in it: # Subsequent windows
        win[:-1] = win[1:]
        win[-1] = e
        yield win

if __name__=="__main__":
    for w in rolling_window(xrange(6), 3):
        print w

"""Example output:

   [0, 1, 2]
   [1, 2, 3]
   [2, 3, 4]
   [3, 4, 5]
"""
</code></pre>
