python - 将列表分组到 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))
但是得到错误的答案。
解决方案
用于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]]
推荐阅读
- django - Django 不检索静态文件
- windows - 使用 for 循环对文件夹进行排序和处理
- node.js - 将 redis 订阅消息中继到 websocket
- java - 带有 Recyclerview 的 AutoCompleteTextview 和自定义过滤
- matlab - 在由另一列分组的某个列上提取具有 [maximum / minimum] 的行
- javascript - 编辑 Javascript 以在单击后更改按钮颜色
- pyspark - DMS for DB2 Endpoint 中的 LSN 格式是什么?
- mysql - 将全名分为名字和姓氏MySQL
- angular - Angular Material Select - 预选多个值
- firebase - FireStore 规则 - 创建加入多个集合的规则