尝试在python中合并列表列表

时间:2020-06-01 17:15:17

标签: python tuples

我有一个包含x和y坐标元组的列表列表,例如 [ [(1, 2), (3, 4), (5, 6)], [(7,8), (0,5)] ],我想将它们组合在一起,使输出包含所有x坐标和所有y坐标。本质上,我试图使输出为[(1,3,5,7,0), (2,4,6,8,5)],以使其为2xN矩阵。我尝试在list(zip(*b)(原始列表)中执行b = [[(1, 2), (3, 4), (5, 6)], [(7,8), (0,5)]],但这没有给我正确的输出。

4 个答案:

答案 0 :(得分:2)

您首先需要展平嵌套列表。您可以使用itertools.chain

from itertools import chain

list(zip(*chain.from_iterable(b)))
# [(1, 3, 5, 7, 0), (2, 4, 6, 8, 5)]

答案 1 :(得分:1)

您的方法是正确的,您只需要先弄平输入列表即可。

>>> lst = [[(1, 2), (3, 4), (5, 6)], [(7,8), (0,5)]]
>>> lst_flat = [x for sublist in lst for x in sublist]
>>> list(zip(*lst_flat))
[(1, 3, 5, 7, 0), (2, 4, 6, 8, 5)]

答案 2 :(得分:1)

首先创建一个平面列表,然后创建两个元组的列表

a = [[(1, 2), (3, 4), (5, 6)], [(7,8), (0,5)]]

flat_list = [item for sublist in a for item in sublist]
b = list(zip(*flat_list))

答案 3 :(得分:0)

最短的解决方案,尽管可能不那么直观。

list(zip(*sum(b,[])))
相关问题