噜噜哒
你可以用zip带着*使矩阵转置:>>> A = [[ 1, 2, 3],[ 4, 5, 6]]>>> zip(*A)[(1, 4), (2, 5), (3, 6)]>>> lis = [[1,2,3], ... [4,5,6],... [7,8,9]]>>> zip(*lis)[(1, 4, 7), (2, 5, 8), (3, 6, 9)]如果希望返回的列表为列表:>>> [list(x) for x in zip(*lis)][[1, 4, 7], [2, 5, 8], [3, 6, 9]]#or>>> map(list, zip(*lis))[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Helenr
如果我们想返回相同的矩阵,我们会写:return [[ m[row][col] for col in range(0,width) ] for row in range(0,height) ]这样做是通过遍历每一行并返回每个列中的每个元素来迭代矩阵m。所以命令应该是:[[1,2,3],[4,5,6],[7,8,9]]现在,对于问题3,我们希望逐列,返回每一行中的每个元素。所以命令应该是:[[1,4,7],[2,5,8],[3,6,9]]因此,只需切换迭代顺序:return [[ m[row][col] for row in range(0,height) ] for col in range(0,width) ]