我写了一个脚本,将矩阵顺时针旋转90度。我想通了 超出算法但坚持实施。
def rotate(M):
#Let M = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n = len(M)
temp = None
for i in range(0, n):
for j in range(i, n):
temp = M[i][j]
M[i][j] = M[j][i]
M[j][i] = temp
nby2 = int(n / 2)
#error loop
for j in range(0, nby2):
for i in range(0, n):
temp = M[i][j]
M[i][j] = M[i][n - 1 - j]
M[i][n - 1 -j] = temp
#print(M[i][j], M[i][n - 1 - j])
for i in M:
print(i)
行temp = M[i][j]
正在提升TypeError: 'int' object is not subscriptable
虽然print语句返回矩阵的元素而没有错误循环中的错误,并且上面的循环工作得很好。
答案 0 :(得分:1)
这是正确的灵魂:
def rotate(M):
#Let M = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n = len(M)
temp = None
for i in range(0, n):
for j in range(i, n):
temp = M[i][j]
M[i][j] = M[j][i]
M[j][i] = temp
nby2 = int(n / 2)
#error loop
print(M, nby2)
for j in range(0, nby2):
for i in range(0, n):
temp = M[i][j]
M[i][j] = M[i][n - 1 - j]
M[i][n - 1 -j] = temp
#print(M[i][j], M[i][n - 1 - j])
for i in M:
print(i)
注意第M[n - 1 -j][i] = temp
行中的错误。您忘记添加第二个索引,从而导致列表被整数替换。