高斯消除"对象没有属性' __ getitem __'"

时间:2016-07-13 14:16:52

标签: python typeerror

基本上,我试图对Gauss Elimination(Foward)方法进行编码,但是,当执行时,Python会在两个列表之间发生减法时引发异常说:"Object has no attribute '__getitem__'"

完整的堆栈跟踪是:

Traceback (most recent call last): 
File line 35, in <module>
    b=a.GaussForward()
File line 29, in GaussForward 
    self.a[index][w]=self.a[index][w]-aux[i][w]
TypeError: 'float' object has no attribute 'getitem'

我将发布以下代码。

class TestGauss():
    a=[]
    def __init__(self,A):
        self.a=A
    def __getitem__(self,i):
        return self.a[i]

    def __setitem__(self,i,value):
        self.a[i]=value

    def GaussForward(self):
        pivo=0.0
        fact=0.0
        aux=[]
        for i in range(len(self.a)):
            pivo=self.a[i][i]
            for j in range(i+1,len(self.a[0])):
                fact=self.a[j][i]/float(pivo)
                print fact
                for k in range(len(self.a[0])):
                    self.a[i][k]*=fact
                for w in range(len(self.a[0])):
                    aux=self.a[i]
                    if i+1<len(self.a[0]):
                        index=i+1
                        self.a[index][w]=self.a[index][w]-aux[i][w]

        print self.a

1 个答案:

答案 0 :(得分:0)

你的问题在于aux[i][w]。由于您设置了aux=self.a[i]aux是一个平面列表(即不是列表列表),因此当您尝试访问aux[i][w]时,您正在尝试索引{{ 1}}这是不正确的。我想你打算这样做:

self.a[i][i][w]