【问题标题】:In python, trying to combine elements from a list of lists into a new list of combined-element lists [duplicate]在python中,试图将列表列表中的元素组合成一个新的组合元素列表列表[重复]
【发布时间】:2026-01-27 08:05:03
【问题描述】:

我是python新手。

我有一个列表列表:

test=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]

我想组合每个列表的元素,以便得到结果:

result = [[1,4,7,10],[2,5,8,11],[3,6,9,12]]

我正在寻找一种适用于 n 个元素的解决方案,答案是列表列表(元组列表对我不起作用)。理想情况下,我希望测试有 n 个元素而不是一个确定的数字。

我希望以下内容能够奏效:

result = map(zip,test)

但事实并非如此。

有没有直接的方法可以做到这一点?

【问题讨论】:

  • 您似乎想用列表做向量函数?映射和压缩的范围仅限于更简单的列表函数。如果您想要更复杂的函数,请考虑使用集合。
  • @Prune,我不这么认为。那是指一个元组列表作为答案。我正在专门寻找一个列表作为答案。
  • 区别是一个微不足道的类型转换操作。我觉得这个问题的重要部分是 zip(*test) 洞察力。我选择上述问题作为最容易说明这一见解的问题。
  • 我是新手。如果我找到了另一个问题,对我来说,它会回答我的问题并不明显。请记住,我的问题在大约 1 个月后对我来说是微不足道的。 :-)

标签: python list python-2.7


【解决方案1】:

您不是在寻找map()

你正在寻找 zip() 并解包,这个函数正是你想要的:

result = zip(*test)
# [(1, 4, 7, 10), (2, 5, 8, 11), (3, 6, 9, 12)]

如果你真的需要列表列表,可以使用map()

result = map(list, zip(*test))
# [[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]

请注意,如果您使用的是 Python 3,zip()map() 不再返回 list,因此您可能需要使用 list() 强制转换来包装整个表达式。

【讨论】:

  • 谢谢!我忘记了星号。 :-)
【解决方案2】:
result = map(list, zip(*test))

【讨论】:

  • 谢谢。这给了我作为列表的元素。