ローリングまたはスライディングウィンドウイテレータ?
シーケンス/イテレータ/ジェネレータで反復可能なローリングウィンドウ(別名スライディングウィンドウ)が必要です。デフォルトのPython反復は、ウィンドウの長さが1である特別な場合と考えることができます。現在、次のコードを使用しています。誰かがこれを行うためのよりPythonic、冗長ではない、またはより効率的な方法を持っていますか? 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, …