Raymond Hettinger wrote: > No thanks. The resolution of this one was that windowing iterables is > not a good idea. It is the natural province of sequences, not > iterables. With sequences, it is a matter of using an index and > offset. With iterables, there is a great deal of data shifting. Also > note that some of the uses are subsumed by collections.deque().
Interesting - the old 'hammer-nail' tunnel vision strikes again, I guess. So moving the question to a different part of the docs, would it make sense to include a deque recipe showing how to use a deque in a generator to permit windowing of an arbitrary iterator? Something like: def window(iterable, window_len=2, window_step=1): itr = iter(iterable) step_range = xrange(window_step) current_window = collections.deque(islice(itr, window_len)) while window_len == len(current_window): yield current_window for idx in step_range: current_window.popleft() current_window.extend(islice(itr, window_step)) Even if an application doesn't use the generator approach directly, it still illustrates how to use a deque for windowing instead of as a FIFO queue or a stack. > The thought process was documented in a series of newsgroup postings: > http://groups.google.com/group/comp.lang.python/msg/026da8f9eec4becf Thanks for that reference - I was searching the wrong list, so I didn't find it. Cheers, Nick. -- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com