これの続き。
いい感じのライブラリを見つけた
Twitter でこのブログ記事を紹介していただいた。
ここの後半に more-itertools
というライブラリが紹介されているのだが、この more-itertools
内にある windowed
という関数がまさしく求めているものだった。
実装もそんなに長くないので軽く眺めてみたが、難しくは全くないが正しく書くのはダルそうなコードだった。
簡単な紹介
インストールは pip
でできる。
$ pip install more-itertools
前回の記事の例は(リストではなくタプルのままだが)以下のようなコードを書けばいい。
from more_itertools import windowed for item in windowed(range(100), 4): print(item)
実行結果は下のような感じ。
(0, 1, 2, 3) (1, 2, 3, 4) (2, 3, 4, 5) (3, 4, 5, 6) (4, 5, 6, 7) (5, 6, 7, 8) (6, 7, 8, 9) (7, 8, 9, 10) (8, 9, 10, 11) (9, 10, 11, 12) (10, 11, 12, 13) ...(以下略)
こんな感じで使える。ほかにも地味に便利な関数が定義されていたりするので、APIリファレンスを軽く眺めておくと幸せになれるかもしれない。