为什么我的脚本会引发TypeError:' int'对象不可订阅

时间:2017-09-05 07:11:18

标签: python syntax-error

我写了一个脚本,将矩阵顺时针旋转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语句返回矩阵的元素而没有错误循环中的错误,并且上面的循环工作得很好。

1 个答案:

答案 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行中的错误。您忘记添加第二个索引,从而导致列表被整数替换。

相关问题