获取错误"索引超出范围"从列表中删除元素时

时间:2017-04-27 11:25:53

标签: python list function

我正在尝试从列表中删除一个元素,但不知何故似乎得到错误的#34;列表分配索引超出范围"在temp [index2]赋值行中。以下是我的代码。

  def remove(self, target_item):
    if self.count == 0:
        print("list is empty")
    else:
        index1 = 0
        index2 = 0
        temp = []
        while index1 < self.count:
            if self.str_list[index1] != target_item:
                temp[index2] = self.str_list[index1]
            else:
                self.count -= 1
        index = 0
        while index < self.count:
            self.str_list[index] = temp.index

有人可以解释为什么我会收到此错误以及如何纠正此错误?

PS:我不能使用任何内置列表方法。

2 个答案:

答案 0 :(得分:1)

您为什么要尝试修改self.str_list inplace?只需构建一个新的筛选列表:

def remove(self, target_item):
    self.str_list = [item for item in self.str_list if item != target_item]

答案 1 :(得分:0)

您的temp列表初始化为空。解决此问题的一种方法是向if语句添加条件或初始化非空列表。

if len(temp) > 0 and self.str_list[index1] != target_item:
    temp[index2] = self.str_list[index1]