【发布时间】:2018-12-22 12:28:30
【问题描述】:
我正在尝试在 python 中将 3*3 矩阵顺时针旋转 90 度。 我已经确定 [i][j] 处的元素转到 [j][new_i]。 这里 new_i 依赖于前一个 i,所以我为它创建了一个函数,称为循环减法。
如果 i 为 0,则 new_i 为 2
如果 i 为 1,则 new_i 为 1
如果 i 为 2,则 new_i 为 0
执行后,它给了我意想不到的结果。
我已经打印了每次迭代中发生的所有事情。 我无法弄清楚某些元素是如何被不同的元素替换的。
'''
1 2 3 7 4 1
4 5 6 rotate 90 degrees 8 5 2
7 8 9 9 6 3
'''
def circular_subtraction(i):
new_i = i
if(i==0):
new_i = 2
elif(i==1):
new_i = 1
elif(i==2):
new_i = 0
return new_i
def rotate_clock(matrix):
new_matrix = matrix
for i in range(len(matrix)):
for j in range(len(matrix)):
new_i = circular_subtraction(i)
new_matrix[j][new_i] = matrix[i][j]
print("New element added from {},{} to {},{} ::: {} to {}".format(i+1,j+1,j+1,new_i+1,matrix[i][j],new_matrix[j][new_i]))
for each_row in new_matrix:
print(each_row)
matrix = [[1,2,3],[4,5,6],[7,8,9]]
print("Length of the matrix : ",len(matrix))
for each_row in matrix:
print(each_row)
print()
matrix = rotate_clock(matrix)
输入矩阵是
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
预期结果是:
[7, 4, 1]
[8, 5, 2]
[9, 6, 3]
结果是:
[7, 4, 1]
[2, 5, 2]
[1, 2, 1]
【问题讨论】:
-
请尝试指出上述代码中的错误。我知道它可以很容易地用 numpy 完成,但我想手动尝试。