链接
https://leetcode-cn.com/problems/transpose-matrix/description/
要求
给定一个矩阵 A, 返回 A 的转置矩阵。
矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。
输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]
输入:[[1,2,3],[4,5,6]]
输出:[[1,4],[2,5],[3,6]]
相关代码
- 切片
class Solution(object):
def transpose(self, A):
ans1 = []
ans2 = []
for i in A:
ans1 += i
for j,k in enumerate(A[0]):
ans2.append(ans1[j::len(A[0])])
return ans2
- map + zip
这个方法在做checkio的题的时候已经见过 所以不是自己解出来的
class Solution(object):
def transpose(self, A):
return map(list,zip(*A))
两种解法效率上完全相同。
心得体会
zip(*A)的结果和zip()相反
A = [1,2,3]
B = [4,5,6]
C = zip(A,B)
D = zip(*C)
print C
print D
print结果依次为
[(1, 4), (2, 5), (3, 6)]
[(1, 2, 3), (4, 5, 6)]