[英]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.