[PYTHON] for循环中关于列表list中remove method 不得不说的秘密

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PYTHON] for循环中关于列表list中remove method 不得不说的秘密相关的知识,希望对你有一定的参考价值。

在学习for loop的时候,是否遇到过这样情况,在遍历列表的时候,无论是用remove方法还是通用del 不能删掉想删除的元素?

首先list中remove method 可以直接删除 想删掉的值,例:a=[‘h‘,‘z‘,‘j‘,1,2,3]->a.remove(h)->a.remove(1)->a=[‘z‘,‘j‘,,2,3]

                del 通用方法呢 要使用统一的下标,通过下标来删掉对应的值,例:a=[‘h‘,‘z‘,‘j‘,1,2,3]->del a[0]->del a[4]->a=[‘z‘,‘j‘,1,3]

但是,我们把他放在for循环里是什么样呢?

技术分享图片

本来我们想要的是,删除列表中每一个元素,但是为什么列表还会剩两个值?

因为具体过程如下:

1、当第一次删除后,后面的元素会前移,此时a=[2,3,4,5]#第一个元素可以正常删除
2、然后指针下一次会指向新列表的第二个元素(即初始状态的第三个位置),从而初始状态的第二个位置被跳过了,初始第三个位置被删除,接着后面的元素又再次前移(变成[2,4,5])

#指针对应的下标为2 ,因为发生位移,第二次遍历的时候i的值直接指向第二位,也是3
3、指针指向新列表的第三个元素,即初始状态的第5个元素5,然后5被删除了,因此只剩下[2,4]

#第一次:a=[1,2,3,4,5]->a=1 第二次:a=[2,3,4,5]->指针发生变法i=3 同理第三次i=5

 

如果数据量不是特别大的时候,可以尝试复制一份对应的数据,遍历旧数据的时候,删除新数据里的值,这样就实现了

技术分享图片

这样就实现了删除列表,或者也可以建立新列表,每次遍历直接添加需要提取的元素

当然你要想删除列表,只需要clear method 就好了。

今天写的是,指针的问题,后面当然没有什么用,道理明白就好。



以上是关于[PYTHON] for循环中关于列表list中remove method 不得不说的秘密的主要内容,如果未能解决你的问题,请参考以下文章

使用for循环遍历python中的列表

python中,for循环,map函数,list comprehension列表推导的效率比较

python如何用循环生成列表,把[0,1,2,3] 变成[1,2,3,4]

python语法问题:关于在list中使用for循环

Python3基础 list 使用for循环 删除列表中的重复项

python中,如何在每一次for循环时都建一个新的列表?