2017-06-22 76 views
0

我有这样一个列表的列表:结合不同长度的多个列表中列出的名单

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

我必须通过另一个列表等给出长度的名单组合:

list2=[1, 2, 3] 

最终结果应该是这样的:[[1],[2,3],[4,5,6]]。

我如何可以继续做到这一点,我使用Python 3.6

+2

可能的答案:https://stackoverflow.com/a/42693268/2148023 –

+0

如果原始'list1'中的某个列表包含两个或更多项目,该怎么办?或者是一个空的列表? –

+0

在我的情况下,list1中的列表总是有一个元素,并且从不为空 – Karthik

回答

0

你可以尝试在列表理解了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)),并将它们组合成一个列表。

+0

谢谢!有效。关于代码的一点说明会有所帮助。 – Karthik

+0

@Karthik当然,看看编辑。 – arshajii

+0

非常感谢! – Karthik