zoukankan      html  css  js  c++  java
  • 在python列表中删除所有空元素

    今天在测试数据的时候偶然发现一个问题,如下:

    test = ['a','','b','','c','','']
    
    for i in test:
        if i == '':
            test.remove(i)
    print(test)
    Out[3]: ['a', 'b', 'c', '']
    

    for循环居然不能删除列表中所有空值!
    偶然收到@有问题尽管问我 发的消息,才对此问题有些明白。下面是他的原话:
    for的计数器是依次递增的,但列表的内容已通过remove更改,i迭代的值为a ‘’ ‘’ ‘’然后越界,所以,只能删除前三个空元素。

    这个问题算是大家非常容易忽略的细节问题。在遍历列表时,特别要注意遍历过程中不要对原列表进行增删操作,以免影响迭代过程。
    这也是把

    if i == '' 换成 if len(i) == 0 
    

    依旧不行的原因。
    搜寻了一下网上的做法,下面两种方法可以做到:

    #第一种:
    while '' in test:
        test.remove('')
    #第二种:
    mytest = [i for i in test if i != '']
    

    如果遇到一些复杂的问题,不得不有对原列表进行增删操作,可以考虑递归。

  • 相关阅读:
    shell 脚本3 (输出与流程控制)
    centos 添加sudo 权限
    rz安装
    centos 安装mysql
    linux删除文件未释放
    关于字符串String的编程。
    spring mvc 学习指南二
    spring mvc 学习指南一
    《 spring mvc 》学习计划
    关于jsp的总结
  • 原文地址:https://www.cnblogs.com/aloiswei/p/9083638.html
Copyright © 2011-2022 走看看