如何压缩单个嵌套列表的元素[重复]

问题描述 投票:0回答:3

考虑嵌套列表:

d = [[1,2,3],[4,5,6]]                                                                                                                                                                                                                                                  

我要为此结果将其元素zip

 [[1,4],[2,5],[3,6]]

该怎么做?一种不正确的方法是

list(zip(d))

但是,给出:

[([1, 2, 3],), ([4, 5, 6],)]

zip的正确方法是什么?

python
3个回答
4
投票

您需要通过解压缩(*)作为zip()的单个参数来给出单个子列表,如下所示:

d = [[1,2,3],[4,5,6]]          
zip(*d)  # You need this one
[(1, 4), (2, 5), (3, 6)]

这甚至适用于更长的列表,如果这是您想要的行为:

zip(*[[1,2,3],[4,5,6],[7,8,9]])
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

如果要使用列表列表而不是元组列表,请执行以下操作:

map(list, zip(*d))
[[1, 4], [2, 5], [3, 6]]

2
投票

这将解决问题:

list(zip(*d))

0
投票

您在压缩d之前应先将其解压缩:

list(zip(*d))

输出是一个元组列表,如下:

[(1, 4), (2, 5), (3, 6)]

我希望这很适合您。


0
投票
d = [[1,2,3],[4,5,6]]
a= d[0]
b= d[1]
print(tuple(zip(a,b)))
© www.soinside.com 2019 - 2024. All rights reserved.