我是靠谱客的博主 畅快康乃馨,这篇文章主要介绍Python 列表循环删除,现在分享给大家,希望可以做个参考。

案例

列表循环删除中,第一次很容易采坑

如下面案例,我们想把列表中 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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部