概述
案例
列表循环删除中,第一次很容易采坑
如下面案例,我们想把列表中 2全部删除
alist = [1,2,3,1,2,2,3,4]
for i in alist:
if i == 2:
alist.remove(i)
print(alist)
我们希望得到 [1, 3, 1, 3, 4]
结果 [1, 3, 1, 2, 3, 4
,有一个2
漏掉了
分析
for循环一个list的时候,每次循环Index索引+1。
如果这个时候动态的改变列表
比如第一次循环 索引Index = 0, 下一次循环就是 Index = 1
如果这个时候列表list动态的改变了,
例如Index=1的元素前进的一位,变为Index = 0位置了,这个时候就会漏掉,循环索引会找Index=1的,但是你的Index变为0了,就漏掉了。
alist = [2,2,3]
for i in alist:
if i == 2:
alist.remove(i)
print(alist)
# [2,3]
# 第一次循环,alist=[2,2,3] Index=0,元素为2,删掉。列表[2,2,3] -> [2,3]
# 第二次循环,alist=[2,3] Index=1,元素为3,不删。列表[2,3]
避坑
采用倒叙
或者拷贝
一个新列表循环
alist = [2,2,3]
for i in alist[:]:
if i == 2:
alist.remove(i)
print(alist)
alist = [2,2,3]
for i in alist[::-1]:
if i == 2:
alist.remove(i)
print(alist)
最后
以上就是畅快康乃馨为你收集整理的Python 列表循环删除的全部内容,希望文章能够帮你解决Python 列表循环删除所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复