我有这样一个列表的列表:结合不同长度的多个列表中列出的名单
list1=[[1], [2], [3], [4], [5], [6]]
我必须通过另一个列表等给出长度的名单组合:
list2=[1, 2, 3]
最终结果应该是这样的:[[1],[2,3],[4,5,6]]。
我如何可以继续做到这一点,我使用Python 3.6
我有这样一个列表的列表:结合不同长度的多个列表中列出的名单
list1=[[1], [2], [3], [4], [5], [6]]
我必须通过另一个列表等给出长度的名单组合:
list2=[1, 2, 3]
最终结果应该是这样的:[[1],[2,3],[4,5,6]]。
我如何可以继续做到这一点,我使用Python 3.6
你可以尝试在列表理解了list2
使用上list1
的迭代器:
>>> 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(...)
实际上是从list1
(通过next(v)
)a
子列表(通过range(a)
),并将它们组合成一个列表。
可能的答案:https://stackoverflow.com/a/42693268/2148023 –
如果原始'list1'中的某个列表包含两个或更多项目,该怎么办?或者是一个空的列表? –
在我的情况下,list1中的列表总是有一个元素,并且从不为空 – Karthik