首页 > 解决方案 > 使用另一个列表中的元素对列表进行分组

问题描述

我想使用出现在另一个列表中的元素连续分组一个列表。

例如,

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方式来做到这一点,但我在编码时遇到了麻烦。

此外,我在互联网上查看了对列表进行分组的不同方法,但我发现没有一种方法可以帮助我使用每个组更改的分组值对列表进行分组(如上面的示例中所示)。

任何人都可以帮忙吗?

标签: pythonpython-3.x

解决方案


使用迭代器:

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]]

推荐阅读