Python实现ArrayList类removeVal方法 删除首个匹配元素返回布尔值
自定义ArrayList类removeVal方法实现方案
原代码存在的问题
- 变量
i未初始化就执行i+=1,运行会抛出未定义报错 - 循环内
return False位置错误,首元素不匹配就直接返回结果,无法遍历后续元素 - 错误调用内置
list类型的removeVal方法,该方法属于自定义ArrayList类,需先实例化类对象再调用 - 误用
list.remove()方法,该方法入参为待删除的元素值,按索引删除需使用list.pop() - 删除元素后未同步更新类属性
self.count,导致length()方法返回值错误
正确实现代码
class ArrayList: def __init__(self): self.inArray = [] self.count = 0 def get(self, i): return self.inArray[i] def set(self, i, e): self.inArray[i] = e def length(self): return self.count # 新增append方法方便测试添加元素,可根据自身需求调整元素添加逻辑 def append(self, e): self.inArray.append(e) self.count += 1 def removeVal(self, e): # 遍历数组找第一个匹配的索引 for i in range(self.count): if self.inArray[i] == e: # 按索引删除元素 self.inArray.pop(i) # 同步更新计数 self.count -= 1 return True # 遍历完所有元素都没找到匹配项才返回False return False # 测试用例 if __name__ == "__main__": # 实例化自定义ArrayList对象 arr = ArrayList() # 填充测试数据 test_data = [1,2,2,3,4,5] for num in test_data: arr.append(num) # 测试删除存在的元素 print(arr.removeVal(2)) # 输出True # 打印删除后的所有元素,预期输出[1,2,3,4,5] print([arr.get(i) for i in range(arr.length())]) # 测试删除不存在的元素 print(arr.removeVal(6)) # 输出False # 打印数组,预期和删除后结果一致没有变化 print([arr.get(i) for i in range(arr.length())])
运行结果说明
- 调用
removeVal(2)后,第一个值为2的元素被删除,返回True,数组剩余元素为[1,2,3,4,5] - 调用
removeVal(6)时没有匹配元素,数组无变化,返回False
内容的提问来源于stack exchange,提问作者DeadlyDragonnn
相关产品推荐
相关产品推荐

