Codabledays

毎日はcodeの欠片

リストを連続した同じ要素のグループに分ける

小ネタ。よく使うけど忘れるのでメモ。
「110011」みたいに0と1で構成されていたら「11」「00」「11」に分割して処理したいときは、itertoolsのgroupbyを使う。

from itertools import groupby
s = [0, 0, 2, 2, 1, 1, 3, 0, 5, 5, 1, 1, 4, 0, 0, 1, 1]
for key, group in groupby(s):
    print(key, list(group))

出力

0 [0, 0]
2 [2, 2]
1 [1, 1]
3 [3]
0 [0]
5 [5, 5]
1 [1, 1]
4 [4]
0 [0, 0]
1 [1, 1]