次のような配列が与えられたPythonでは:
a = [ 0, 1, 3, 4, 6, 7, 8, 10, 14 ]
これを3つの不均一なグループに分割して、最終的に次のようにしたいと思います。
b = [0, 1, 3, 4]
c = [6, 7, 8]
d = [10, 14]
数値を 5 の倍数でグループ化したいと考えています。したがって、0 ~ 4 の整数は最初の配列に、5 ~ 9 は 2 番目の配列に、というように続きます。
Itertools.groupbyは常に答えです!
ここでは、各数値を最も近い 5 に切り捨ててから、等しい数値でグループ化します。
>>> for n, g in itertools.groupby(a, lambda x: round(x/5)*5):
print list(g)
[0, 1, 3, 4]
[6, 7, 8]
[10, 14]