python - 使用另一个列表中的元素对列表进行分组
问题描述
我想使用出现在另一个列表中的元素连续分组一个列表。
例如,
x = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
y = [2,3,1,5,6,4]
我想x
使用 list对 list 进行分组y
,这样一个新的列表,比如 list z
,将显示为:
z = [[0,1],[2,3,4],[5],[6,7,8,9,10],[11,12,13,14,15,16],[17,18,19,20]]
应该有一种pythonic方式来做到这一点,但我在编码时遇到了麻烦。
此外,我在互联网上查看了对列表进行分组的不同方法,但我发现没有一种方法可以帮助我使用每个组更改的分组值对列表进行分组(如上面的示例中所示)。
任何人都可以帮忙吗?
解决方案
使用迭代器:
from itertools import islice
values = list(range(0, 21))
lengths = [2, 3, 1, 5, 6, 4]
values_iterator = iter(values)
lists = [list(islice(values_iterator, length)) for length in lengths]
print(lists)
输出:
[[0, 1], [2, 3, 4], [5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16], [17, 18, 19, 20]]
推荐阅读
- java - Tomcat 的 Tomcat 池在 JMX 中缺少 DataSource 条目
- evernote - 开发者生产代币
- excel - Excel - 如果特定列中的单元格包含在另一列中找到的值,则删除行
- typescript - 如何在打字稿中创建二维对象数组
- javascript - 在 Jest 中测试嵌套的 Promise
- python - 使用 python 创建排序的 sqlite 数据库
- c++ - 如何编写可以包含不同强类型枚举作为错误代码的错误结构?
- python - pymc3确定性中的广播形状
- python - 如何在 ArcGIS 安装的 Python 2.7 中安装 pip
- javascript - 接近尾声的倒计时计时器