我是靠谱客的博主 畅快康乃馨,最近开发中收集的这篇文章主要介绍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 列表循环删除所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部