On 2009-10-12 11:21 AM, samwyse wrote:
Previous discussions in c.l.py (primarily those that propose new functions to be added to itertools) claim that people do this all the time, but seem woefully short of actual examples. Before I possibly re-invent the wheel(*), could someone point me to some actual code that approximates what I want to do? Thanks.
From grin, my grep-alike: http://pypi.python.org/pypi/grin def sliding_window(seq, n): """ Returns a sliding window (up to width n) over data from the iterable Adapted from the itertools documentation. s -> (s0,), (s0, s1), ... (s0,s1,...s[n-1]), (s1,s2,...,sn), ... """ it = iter(seq) result = () for i, elem in itertools.izip(range(n), it): result += (elem,) yield result for elem in it: result = result[1:] + (elem,) yield result A slight modification of this should get what you want. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list