python 函数中的类型错误(不可订阅的 int 对象)

TypeError in python function (int object not subscriptable)

我有一个函数可以打印出 3x3 矩阵的 2x2 矩阵卷积:

image = [[1,0,1],       # Original image
        [0,1,0],
        [1,0,1]]

我的函数应该在哪里打印出来:

[1,0]
[0,1]
[0,1]
[1,0]
[0,1]
[1,0]
[1,0]
[0,1]

函数如下

def convolution(image,result):
    # Image being 2d matrix
    # Result being return stacked 2d matrices
    # DECLARE LOCAL VARIABLES
    a = 0   # Slice [a:b]
    b = 2
    r = 0
    # For row in image:
    for row in image:
        # While b < row length:
        while b < len(row):
            print(row[r][a:b])   # HERE IS THE ERROR
            print(row[r+1][a:b])
            a += 1
            b += 1
        a = 0   # Slice [a:b]
        b = 2
        matrix2d.clear()

我收到以下错误:

Traceback (most recent call last):
  File "conv.py", line 49, in <module>
    convolution(image,result3d)
  File "conv.py", line 24, in convolution
    print(row[r][a:b])
TypeError: 'int' object is not subscriptable

错误信息对我来说比较模糊。如何纠正此错误?

在您的代码中,row 是您图像的一行,例如第一行是 [1,0,1]。然后在你的 while 循环中, row[r] 是一个整数,而不是数组。

错误信息给了你错误所在的行,说你不能取整数的下标,意思是你不能做a[1]如果a是一个int.有了这些信息,您就有了一个很好的线索来发现 row[r] 确实是一个整数。