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]
  • 相关阅读:
    hdu 5366 简单递推
    hdu 5365 判断正方形
    hdu 3635 并查集
    hdu 4497 数论
    hdu5419 Victor and Toys
    hdu5426 Rikka with Game
    poj2074 Line of Sight
    hdu5425 Rikka with Tree II
    hdu5424 Rikka with Graph II
    poj1009 Edge Detection
  • 原文地址:https://www.cnblogs.com/guoguojj/p/7569491.html
Copyright © 2011-2022 走看看