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

Python遍历数组删除元素时出现List index out of range错误求解

解决List index out of range错误:列表引用与遍历删除的问题

这个问题我之前踩过一模一样的坑,核心原因其实是列表的引用赋值在搞怪!

先拆解你原代码的问题:

  • 你写的res_arr = arr并没有创建一个新的列表,而是让res_arr和arr指向了内存中同一个列表对象——说白了就是俩变量共用同一份数据。
  • 循环for i in range(len(arr))在执行前就确定了循环次数是原arr的长度(也就是7次)。但每次执行res_arr.remove(arr[i])时,因为两个变量指向同一个列表,所以arr的长度会跟着res_arr一起减少。比如删除55之后,列表长度变成6,但循环还是会按7次去跑,当i到6的时候,列表只剩6个元素(索引范围0-5),自然就触发了List index out of range错误。

你后来改成res_arr = list(arr)就完美解决了!list(arr)会生成原列表的浅拷贝,相当于创建了一个完全独立的新列表。这时候循环遍历原arr的元素,删除的是新列表res_arr里的内容,原arr的长度不会变化,循环就能正常执行完,不会再出现索引越界的问题。

另外给你推荐一个更简洁的写法,用列表推导式一步到位,还能避免遍历删除的各种坑:

arr = [11,22,33,44,55,66,77]
brr = [1,2,3,4,55]
res_arr = [num for num in arr if num not in brr]

内容的提问来源于stack exchange,提问作者nnnnn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:24:01