我有一个列表,如:
list1=[[1], [2], [3], [4], [5], [6]]
我必须组合另一个列表给出的长度列表,如:
list2=[1, 2, 3]
最终结果应如下:[[1],[2,3],[4,5,6]]。
我该如何继续这样做?我正在使用Python 3.6
答案 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
list1
是next(v)
上的迭代器; a
只返回列表中的下一个子列表。在理解中,list2
采用sum(...)
中的值,表示我们想要的组合列表的长度。 a
实际需要range(a)
子列表(来自list1
)来自next(v)
(通过{{1}}),并将它们合并为一个列表。