导读
不开辟新的内存空间来实现矩阵的转置
和旋转
,我们就只能直接去交换矩阵变换后的元素来实现,需要注意的是下面针对的都是方阵
。
矩阵的转置
矩阵的转置其实就是行变列
,列变行
所以我们只需要交换对角线对称的元素
即可
def transpose_matrix(a):
row = len(a)
for i in range(row):
for j in range(i+1,row):
#交换对角线对称的元素位置
a[i][j],a[j][i] = a[j][i],a[i][j]
return a
a = [[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]
矩阵的顺时针90度旋转
其实这个并不难,我们只需要交换四个元素即可,观察下面的图就能看懂了,我们其实只需要处理下图中画圈的四个元素即可
def clockwise_rotate90(a):
row = len(a)
for i in range(row // 2):
for j in range(i,row-1-i):
#交换四个元素
a[j][row-1-i],a[row-1-i][row-1-j],a[row-1-j][i],a[i][j] = \
a[i][j],a[j][row-1-i],a[row-1-i][row-1-j],a[row-1-j][i]
return a
a = [[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]
矩阵的逆时针90度旋转
def anticlockwise_rotate90(a):
row = len(a)
for i in range(row // 2):
for j in range(i,row-1-i):
a[i][j],a[j][row-1-i],a[row-1-i][row-1-j],a[row-1-j][i] = \
a[j][row-1-i],a[row-1-i][row-1-j],a[row-1-j][i],a[i][j]
return a