我有一个列表:
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))
但是得到错误的答案。
最佳答案
使用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]]
关于python - 分组 python 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55221996/