首页 > 解决方案 > 创建由两个列表构建的列表列表

问题描述

我有两个形状如下的列表:

listA
[[778, 606],
 [2115, 2049],
 [3361, 3183],
 [4512, 4179]]

listB
[[-128, -4],
 [-38, 38],
 [-15, 110],
 [-105, 185]]

我想从 listA 和 listB 中获取第一个元素,以创建一个将进入另一个列表的列表。

所以我想要如下输出:

 new_list
 [[[778, 606],[-128, -4]], 
 [[2115, 2049],[-38, 38]], 
 [[3361, 3183],[-15, 110]], 
 [[4512, 4179],[-105, 185]]]

关于如何正确构建列表理解的想法,或者可能有更好的开箱即用方法?


我想我正在为如何附加列表的逻辑而苦苦挣扎。

我尝试了以下方法:

x = []
for i,j in [(i,j) for i in listA for j in listB]:
x.append(i)
x.append(j)

这导致:

[[778, 606],
 [-128, -4],
 [778, 606],
 [-38, 38],
 [778, 606],
 [-15, 110],
 [778, 606],
 [-105, 185]]

这不是我想要的。所以我也尝试了:

y = [(i,j) for i in listA for j in listB]

这导致:

    [([778, 606], [-128, -4]),
     ([778, 606], [-38, 38]),
     ([778, 606], [-15, 110]),
     ([778, 606], [-105, 185]),
     ([2115, 2049], [-128, -4]),
     ([2115, 2049], [-38, 38]),
     ([2115, 2049], [-15, 110]),
     ([2115, 2049], [-105, 185]),
     ([3361, 3183], [-128, -4]),
     ([3361, 3183], [-38, 38]),
     ([3361, 3183], [-15, 110]),
     ([3361, 3183], [-105, 185]),
     ([4512, 4179], [-128, -4]),
     ([4512, 4179], [-38, 38]),
     ([4512, 4179], [-15, 110]),
     ([4512, 4179], [-105, 185])]

标签: pythonpython-3.xlistnested-lists

解决方案


我会为此使用 zip 。这是一次遍历两个列表并获取它们的值的一种非常好的方法。

new_list = [list(c) for c in zip(listA, listB)]
new_list = [*zip(listA, listB)] #if tuples are fine.

输出:

[[[778, 606], [-128, -4]], 
[[2115, 2049], [-38, 38]], 
[[3361, 3183], [-15, 110]], 
[[4512, 4179], [-105, 185]]]

推荐阅读