我正在尝试从列表中删除一个元素,但不知何故似乎得到错误的#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:我不能使用任何内置列表方法。
答案 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]