【问题标题】:Combining multiple lists of different lengths in a lists of lists在列表列表中组合多个不同长度的列表
【发布时间】:2017-06-22 14:31:50
【问题描述】:

我有一个列表,例如:

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

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

list2=[1, 2, 3]

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

如何继续执行此操作?我使用的是 Python 3.6

【问题讨论】:

  • 如果原始list1 中的列表之一包含两个或多个项目怎么办。还是一个空列表?
  • 在我的例子中,list1 中的列表总是有一个元素并且永远不会为空
  • @CarlesMitjans 这个问题很相似,但 list1 在这种情况下是一个列表,而不是列表

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


【解决方案1】:

您可以尝试在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]]

vlist1 的迭代器; next(v) 只返回列表中的下一个子列表。在理解中,a 采用list2 中的值,表示我们想要的组合列表的长度。 sum(...) 实际上是从list1(通过next(v))获取a 子列表(通过range(a))并将它们组合成一个列表。

【讨论】:

  • 谢谢!有效。对代码做一点解释会很有帮助。
猜你喜欢
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 2013-08-02
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
相关资源
最近更新 更多