python循环删除列表元素

如果我们用最常用的方法使用for循环正向遍历列表元素进行删除,结果如下:

一、索引遍历列表循环删除:

 运行结果报错:因为for语句中range()方法按照列表a的长度生成了有序整数序列,但在遍历过程中删除了列表元素,实际列表长度已发生改变,而遍历的序列仍是按原始列表的长度遍历的,导致索引超出范围

 

二、直接遍历列表元素循环删除(正向遍历):

 运行结果:未按要求删除所有值为4的元素

因为当删除一个元素后该元素后面未遍历的元素均会向前移动一个位置,导致后面的元素索引值-1,下一个要遍历的元素移动到当前已遍历元素的位置,导致漏删。

正向遍历:删除过程中未遍历的元素索引位置不停在发生改变

 

 

 

 

循环删除列表所有元素的正确方法:

1、while循环删除:

 

 

 

 

 

2、反向遍历列表循环删除:

从列表末尾开始遍历元素时,删除一个元素后面的元素向前移动一个位置,但后面的元素已经遍历过了所以不会存在漏删的情况

 

 

 

 

 

总结:

1、不能通过索引遍历循环删除元素,因为删除元素后列表实际长度在发生改变;

2、通过直接遍历元素删除时,必须反向遍历删除,因为删除元素后,索引位置发生改变的是已遍历过的元素,对未遍的元素无影响,不存在漏删的情况;

 

posted @   Rachel_0226  阅读(1037)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示