首页 > 解决方案 > 将列表分组到 python 组中

问题描述

我有一个清单:

 l = [2.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 12.0,96.0, 192.0, 480.0, 360.0, 504.0, 300.0]

我想将列表中的元素分组为10的组大小差异。(即,0-10,10-20,20-30,30-40...等)

例如:

我正在寻找的输出是:

[ [2,4,5,6,7,8,10],[12],[96],[192],[300],[360],[480],[504] ]

我尝试使用:

list(zip(*[iter(l)] * 10))

但是得到错误的答案。

标签: python

解决方案


用于itertools.groupby将其除以(//)10 后组合在一起

from itertools import groupby
l = [2.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 12.0,96.0, 192.0, 480.0, 360.0, 504.0, 300.0]

groups = []
for _, g in groupby(l, lambda x: (x-1)//10):
    groups.append(list(g))      # Store group iterator as a list

print(groups)

输出:

[[2.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0], [12.0], [96.0], [192.0], [480.0], [360.0], [504.0], [300.0]] 

推荐阅读