You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:09:03