-
慕神8447489
使用 转置列表zip,然后使用语法将其反转[::-1]。>>> m = [[5, 9, 1, 8], [2, 4, 5, 7], [6, 3, 3, 2], [1, 7, 6, 3]]>>> list(map(list, zip(*m)))[::-1]>>> [[8, 7, 2, 3], [1, 5, 3, 6], [9, 4, 3, 7], [5, 2, 6, 1]]编辑:如果您想要漂亮的打印效果,最简单的方法可能是一直使用 numpy 数组。>>> import numpy as np>>> >>> m = [[5, 9, 1, 8], [2, 4, 5, 7], [6, 3, 3, 2], [1, 7, 6, 3]]>>> m = np.array(m)>>> m>>> array([[5, 9, 1, 8], [2, 4, 5, 7], [6, 3, 3, 2], [1, 7, 6, 3]])>>> >>> m.T[::-1]>>> array([[8, 7, 2, 3], [1, 5, 3, 6], [9, 4, 3, 7], [5, 2, 6, 1]])请注意,m并m.T[::-1]共享相同的数据,因为m.T[::-1]只是另一种观点的m。如果您需要复制数据,请使用result = m.T[::-1].copy()
-
侃侃无极
您可以使用 zip,使用 解压缩列表列表*,然后使用 反转结果[::-1]:m = [[5,9,1,8], [2,4,5,7], [6,3,3,2], [1,7,6,3]]res = [list(i) for i in zip(*m)][::-1]>>> res[[8, 7, 2, 3], [1, 5, 3, 6], [9, 4, 3, 7], [5, 2, 6, 1]]如果numpy是一个选项,移调更容易:import numpy as np>>> np.transpose(m)[::-1]array([[8, 7, 2, 3], [1, 5, 3, 6], [9, 4, 3, 7], [5, 2, 6, 1]])# or:>>> np.flip(np.transpose(m),0)array([[8, 7, 2, 3], [1, 5, 3, 6], [9, 4, 3, 7], [5, 2, 6, 1]])
-
慕哥6287543
您可以使用numpy模块来做到这一点。它具有转置数组的属性。检查以下代码:import numpy as npm = [[5,9,1,8], [2,4,5,7], [6,3,3,2], [1,7,6,3]]arr = np.array(m).transpose()new_list = []for i in range(arr.shape[0]-1,-1,-1): new_list.append(list(arr[i]))print(new_list)输出:[[8, 7, 2, 3], [1, 5, 3, 6], [9, 4, 3, 7], [5, 2, 6, 1]]