@Ashwini 的答案是完美的。魔法发生在
zip(*lis)
让我解释一下为什么这样做: zip (在最简单的情况下)接受两个列表并“压缩”它们:zip([1,2,3], [4,5,6])
会变成[(1,4), (2,5), (3,6)]
。因此,如果您将外部列表视为矩阵,将内部元组视为行,则这就是转置(即,我们将行转换为列)。
Now, zip
是任意数量的函数,因此它可以采用两个以上的参数:
# Our matrix is:
# 1 2 3
# 4 5 6
# 7 8 9
zip([1,2,3], [4,5,6], [7,8,9])
>>> [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
# Now it is
# 1 4 7
# 2 5 8
# 3 6 9
我们面临的问题是,在您的情况下,我们不知道要传递多少参数zip
。但至少,我们已经知道了这些论点:它们是lis
! lis
是一个列表,该列表的每个元素也是一个列表(对应于输入文件中的一行数字)。这*
只是 Python 告诉函数的方式“请使用以下任何内容作为你的论据,而不是事物本身!”
So
lis = [[1,2,3], [4,5,6]]
zip(*lis)
完全一样
zip([1,2,3], [4,5,6])
恭喜,现在您已成为 Python 专家! ;-)