繁体   English   中英

尝试合并 python 中的列表列表

[英]Trying to combine a list of lists in python

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

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

from itertools import chain

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

你的方法是正确的,你只需要先展平你的输入列表。

>>> 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)]

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

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))

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

list(zip(*sum(b,[])))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM