将值分组到相等范围的容器中

时间:2019-07-15 20:32:04

标签: python

说我有一组值[1, 4, 8, 9, 12, 15]

我希望将这些按等距范围的垃圾箱分组, 例如。 1-5, 6-10, 11-15, 16-20, ...

使用上面的一组值,输出将适合如下所示的bin: [1, 4], [8, 9], [12, 15]

有没有解决此问题的Python方法?

2 个答案:

答案 0 :(得分:0)

您可以使用列表理解:

r = 5
l = [1, 4, 8, 9, 12, 15]
bins = [1 + i*r for i in range(max(l)//r + 1)]
bins_list = [[x for x in l if bins[i]<= x < bins[i+1]] for i in range(len(bins)-1)]
print(bins_list) 
# [[1, 4], [8, 9], [12, 15]]

答案 1 :(得分:0)

给人以groupby函数仅接受具有布尔输出的键的印象,例如。 lambda l : l % 2 == 0

我已经对其进行了修改:

def create_grouping(threshold: int):
    return itertools.groupby(values, lambda l: l // threshold)

这会返回分组列表。