python3:列表分配索引超出范围

时间:2019-12-13 15:53:06

标签: python-3.x list

 def enque(self,data):
        if (self.end==self.msize-1 & self.front==0):
            print('Q is full')

        elif self.front==-1:
            self.front=0
            self.end=0
            self.q[self.end]=data

1 个答案:

答案 0 :(得分:0)

检查self.q的长度(即len(self.q))),我想您会发现长度为0。要使列表中有一个0索引(即self.q[0]),您会期望看到self.q的长度为1。由于列表中没有索引0,你不能写一个值。

与其指定不直接存在的索引位置值,不如将其append列表中。

 def enque(self,data):
        if (self.end==self.msize-1 & self.front==0):
            print('Q is full')

        elif self.front==-1:
            self.front=0
            self.end=0
            #self.q[self.end]=data
            self.q.append(data)

请注意,append将始终将数据放在列表的末尾。如果self.q已经具有其他一些值,则追加将不会导致您的数据被置于索引0中。

如果您想始终将其放入索引0(如果存在)或创建索引0(如果它不存在),则可以执行以下操作:

    if self.q: # only non-empty list will pass
        self.q[self.end] = data
    else:      # empty list
        self.q.append(data)