列表删除元素 报错 “list index out of range” 原因详细分析 与 改正

本文讨论了在Python中尝试删除列表元素时遇到的`list index out of range`错误。通过举例说明,当删除列表中的元素时,后续的索引不会自动更新,导致访问超出范围的元素。解决方法是使用迭代器或者在删除元素后调整索引。代码示例展示了如何修正这个问题,确保在遍历过程中正确删除元素。
摘要由CSDN通过智能技术生成

原因分析

我们要在列表删除元素

先看一段代码

删除 1 - 100 中所有 五的倍数的数

ls = [i for i in range(1,101)]

t = 0

for i in range(0 , len(ls)):
    
    if(ls[i] % 5 == 0):
        ls.remove(ls[i])
        t += 1
        
print(ls)

这样系统肯定会报错 , 报错 list index out of range

我们分析一下原因

举个例子 在列表 1 2 3 4 中删除 3

列表的索引在删除前是固定的 , 删除后不会随着删除改变

在这里插入图片描述

在访问元素 4 的时候会访问 ls[3] 但是剩余的列表只剩三个元素 ,最大为ls[2] , 访问 3 就超出了范围

解决方法

解决方法之一就是 对后面访问的元素根绝删除元素个数向左 偏移 删除元素位

ls = [i for i in range(1,101)]

t = 0

for i in range(0 , len(ls)):
    
    if(ls[i - t] % 5 == 0):
        ls.remove(ls[i - t])
        t += 1
        
print(ls)
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草莓猫猫软糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值