假设我有几个长度为 n 的列表:
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
d = [-1, -2, -3]
我将这些列表放入一个列表中:
x = [a, b, c]
现在我想以下面的列表结束:
y = [[1, 4, 7, -1], [2, 5, 8, -2], [3, 6, 9, -3]]
什么是快速和 pythonic 的方法来做到这一点? (从 x 到 y。)
条目可以是任何东西,我使用数字只是因为它们形象化。
请您参考如下方法:
有一种非常简单的 pythonic 方法可以以这种方式“反向压缩”列表。简单使用zip函数和解包操作符*:
>>> y = zip(*x)
>>> list(y)
[(1, 4, 7, -1), (2, 5, 8, -2), (3, 6, 9, -3)]
有关正在发生的事情的更多信息,请参阅 What is the inverse function of zip in python?
如果它是列表的列表而不是元组列表很重要,您可以执行以下操作:
>>> [list(i) for i in zip(*x)]
[[1, 4, 7, -1], [2, 5, 8, -2], [3, 6, 9, -3]]
