zoukankan      html  css  js  c++  java
  • Python循环列表删除元素问题

    有人会遇到这种问题,遍历列表,想删除列表中的某几个元素,执行后发现有些并没有删除到,

    比如以下代码

    a=[1,2,3,4,5,6]
    print(a)
    for i in a: if i==3 or i==4: a.remove(i)
    print(a)

    从代码看主要就是想删除a列表中的 3 4 元素,

    程序的结果是:

    [1, 2, 3, 4, 5]

    [1, 2, 4, 5]

    结果不尽人意,原因是我们在遍历的时候

    • seek走到了3元素的位置
    • if判断remove 3  这个元素
    • 3这个位置删除后位置空出来了,后面的元素就往前移动,替代了3的位置
    • seek继续走到下一个,本来是4元素的,但是4元素往前移了,就错过了,seek走到了5元素的位置

    避免这个这个问题的就需要避免for循环,当然上面的例子可以有很多方法去删除,但是当我们遇到一个不能避免for循环的情况,可以将要删除的元素存储到另外一个列表里面,最后一并删除.

    a=[1,2,3,4,5]
    d=[]
    print(a)
    for i in a:
        if i==3 or i==4:
            d.append(i)
    for i in d:
        a.remove(i)
    print(a)
    
    #[1, 2, 3, 4, 5]
    #[1, 2, 5]
  • 相关阅读:
    JavaScript基础语法及字符串相关方法(1)
    matplotlib实现三维柱状图
    前端入门CSS(3)
    博客页面练习
    前端入门CSS(2)
    前端入门CSS(1)
    前端入门html(表单)
    Longest Palindromic Substring
    Wildcard Matching
    Spiral Matrix II
  • 原文地址:https://www.cnblogs.com/guoguojj/p/7569491.html
Copyright © 2011-2022 走看看