Python 为什么我在方法中出现此错误:“int”对象不可下标

Python 为什么我在方法中出现此错误:“int”对象不可下标,python,python-3.x,Python,Python 3.x,我是Python3类的新手。我要做的是重写类中的函数,但是当我运行它时。我得到了这个错误: 以下是可变内容: print(self.MatPagos) >>> [[200, 3200, 1800, -1800], [-1000, 2000, 5000, 3600], [-2200, 800, 3800, 6800]] print(self.test) >>> [[200, -1000, -2200], [3200, 2000, 800], [1800, 500

我是Python3类的新手。我要做的是重写类中的函数,但是当我运行它时。我得到了这个错误:

以下是可变内容:

print(self.MatPagos)
>>> [[200, 3200, 1800, -1800], [-1000, 2000, 5000, 3600], [-2200, 800, 3800, 6800]]
print(self.test)
>>> [[200, -1000, -2200], [3200, 2000, 800], [1800, 5000, 3800], [-1800, 3600, 6800]]
print(self.test2)
>>> [200, 3200, 5000, 6800]

我错过了什么?

@0x5453你在哪里,但我无法想象它

我在堆栈西班牙语版本中为@FJSevilla获得了这个:

在列表中,不应将属性用作内部变量。当您这样做时:

self.test3 = [self.MatPagos - self.test2 for self.MatPagos, self.test2 in zip(self.test2, self.MatPagos[i])]
覆盖self.MatPagos和self.test2属性的值,在第二次迭代中,这两个属性都是整数,而不是初始列表。做一些类似于:

self.test3 = [matP - test2 for matP, test2 in zip(self.test2, self.MatPagos[i])]
如果可以的话,我建议你暂时使用a。它更具蟒蛇式,效率更高。如果您迭代self.MatPagos的所有行,它将是:

def savage(self):
    self.test = [list(x) for x in zip(*self.MatPagos)]
    self.test2 = [max(k) for k in self.test]

    self.MatPagos  = [[matP - test2 for matP, test2 in zip(self.test2, mprow)] for mprow in self.MatPagos]

self.MatPagos是否为整数?@chrisz这是一个列表由于您的错误,我认为这可能并不总是正确的。您在列表理解中分配给self.MatPagos,因此它正在更改为您不期望的内容。[…对于self.MatPagos,self.test2位于…]。事实上,在这种情况下使用self是非常不正常的,几乎可以肯定是一个错误。为什么它是不正常的@0x5453
self.test3 = [self.MatPagos - self.test2 for self.MatPagos, self.test2 in zip(self.test2, self.MatPagos[i])]
self.test3 = [matP - test2 for matP, test2 in zip(self.test2, self.MatPagos[i])]
def savage(self):
    self.test = [list(x) for x in zip(*self.MatPagos)]
    self.test2 = [max(k) for k in self.test]

    self.MatPagos  = [[matP - test2 for matP, test2 in zip(self.test2, mprow)] for mprow in self.MatPagos]