我有一个包含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)]]
,但这没有给我正确的输出。
答案 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,[])))