如何在python中反转2d列表

R D*_*abh 6 python transpose list

我有一个像这样的2d列表:

   1   2   3

   4   5   6
Run Code Online (Sandbox Code Playgroud)

我想这样做:

   1   4

   2   5

   3   6
Run Code Online (Sandbox Code Playgroud)

我试图做一个for循环并切换每个值,但我不断得到一个索引超出范围的错误.这就是我所拥有的:

for i in results:
    for j in range(numCenturies):
        rotated[i][j] = results [j][i]
Run Code Online (Sandbox Code Playgroud)

aga*_*aga 13

zip函数的python文档:

此函数返回元组列表,其中第i个元组包含来自每个参数序列或迭代的第i个元素.返回的列表的长度被截断为最短参数序列的长度.当有多个参数长度相同时,zip()类似于map(),初始参数为None.使用单个序列参数,它返回一个1元组的列表.没有参数,它返回一个空列表.

例:

zip([1, 2, 3], [4, 5, 6]) # returns [(1, 4), (2, 5), (3, 6)]
Run Code Online (Sandbox Code Playgroud)

如果您需要将结果作为列表列表而不是元组列表,则可以使用列表推导:

[list(x) for x  in zip([1, 2, 3], [4, 5, 6], [7, 8, 9])] # returns [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Run Code Online (Sandbox Code Playgroud)

如果你的所有变量都存储在一个2d列表中,并且你希望它将它传递给zip函数,你可以使用以下(我称之为星号表示法,因为我不记得它的正确英文术语):

results = [[1, 2, 3], [4, 5, 6]]
zip(*results) # returns [(1, 4), (2, 5), (3, 6)]
Run Code Online (Sandbox Code Playgroud)


Chr*_*tin 6

http://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html

>>> from numpy import transpose
>>> transpose([[1,2,3],[4,5,6]])
array([[1, 4],
       [2, 5],
       [3, 6]])
Run Code Online (Sandbox Code Playgroud)