在列表列表中组合多个不同长度的列表

时间:2017-06-22 14:31:51

标签: list python-3.x nested-lists

我有一个列表,如:

list1=[[1], [2], [3], [4], [5], [6]]

我必须组合另一个列表给出的长度列表,如:

list2=[1, 2, 3]
  

最终结果应如下:[[1],[2,3],[4,5,6]]。

我该如何继续这样做?我正在使用Python 3.6

1 个答案:

答案 0 :(得分:0)

您可以尝试在list1上使用list2上的迭代器进行>>> list1=[[1], [2], [3], [4], [5], [6]] >>> list2=[1, 2, 3] >>> v = iter(list1) >>> [sum((next(v) for _ in range(a)), []) for a in list2] [[1], [2, 3], [4, 5, 6]] 的列表理解:

v

list1next(v)上的迭代器; a只返回列表中的下一个子列表。在理解中,list2采用sum(...)中的值,表示我们想要的组合列表的长度。 a实际需要range(a)子列表(来自list1)来自next(v)(通过{{1}}),并将它们合并为一个列表。