精华内容
下载资源
问答
  • python列表删除所有空元素: li= ['a','','b','','c','',''] #第一种: while '' in li: li.remove('') #第二种: li= [i for i in li if i != '']

    在python列表中删除所有空元素:

    li= ['a','','b','','c','','']
    #第一种:
    while '' in li:
        li.remove('')
    #第二种:
    li= [i for i in li if i != '']
    
    
    展开全文
  • 今天在测试数据的时候偶然发现一个问题,如下: ...for的计数器是依次递增的,但列表的内容已通过remove更改,i迭代的值为a ‘’ ‘’ ‘’然后越界,所以,只能删除前三个空元素。 这个问题算是大家非常容易忽略的细

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

    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 != '']
    

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

    展开全文
  • 原文转自:... python列表删除元素及remove的奇怪现象 先看一个例子: test1 = ['a','b','c','',''] for i in test1: if i == '': test1.remove(i) #删除空元素 print(test1) &g...

    原文转自:https://www.cnblogs.com/python-dd/p/9152687.html

    python列表删除元素及remove的奇怪现象

    先看一个例子:

    复制代码

    test1 = ['a','b','c','','']
    for i in test1:
        if i == '':
            test1.remove(i) #删除空元素
    print(test1)
    
    >>>['a', 'b', 'c', '']

    复制代码

    这时发现并没有达到我们想要的结果,原因分析如下:

    要了解一下python列表的数据结构,列表属于连续线性表,它的连续在于有一块连续的内存储存着列表中元素的地址,如图(忽略地址与值所占的字节,只为方便举例子):

     

    当然也可以通过一个代码来看证明一下:

    复制代码

    a=[1,2,3]
    for i in a:
        print(id(i))
    >>>1514106336  #此地址即为左边的连续地址
    
       1514106368
       1514106400

    复制代码

     

     

    回到问题,当我们删除test1中的空字符时,test1 = ['a','b','c','',''],for in 是对下标进行操作,而remove是对值进行操作,当for到达索引为3,即第一个空字符位置时,
    符合条件即删除,后面的那个空字符的索引成为了3,此时对于for循环已经完成任务,故剩余一个空字符。
    还有一个简单的小例子:
    

    复制代码

    a=[1,2,3]
    for i in a:
        print(i,id(i))
    print("------------------")
    for i in a:
        if i==1:
            a.remove(i)
        print(i,id(i))
    print("------------------")
    print(a)
    >>>
    1 1380150752
    2 1380150784
    3 1380150816
    ------------------
    1 1380150752
    3 1380150816
    ------------------
    [2, 3]

    复制代码

    
     

    在列表中遍历,当元素值为1时删除此元素,然后打印,我们得到的输出结果是打印1和3,这和上面那个道理是一样的,删除1后,2会取代1的位置,3取代2的位置,所以就第二次遍历就输出3了,

    python中一切皆对象,i是一个临时变量,删除了元素1后还可以输出i的值及地址,数组元素的移除和i没有关系。

    
     
    列表有三种删除元素方式,del,remove,pop,其中del是python的一个方法不是列表所特有,pop()参数为元素的索引,remove()参数是想要删除的值
    
    
    用一下del看看会出现什么结果:

    复制代码

    a=[1,2,3]
    for i in a:
        if i==2:
            del i
            print(id(i))
    #报错 NameError: name 'i' is not defined

    复制代码

     

    复制代码

    a=[1,2,3]
    for i in a:
        if i==2:
            del i #del是解除引用,python中一切皆引用
        try:
             print(id(i))
        except NameError:
            pass
    
    a删除前地址1927704032   
          1927704064           
           1927704096
    删除后输出 1927704032
      
             1927704096
    
     

    复制代码

    对比地址的变化,可以得知del删除了该元素内存地址引用,所以报了错,与remove对比。

    删除列表中的空元素有这两种方法:

    复制代码

    #第一种
    test2 = ['a','','b','','c','','']
    while '' in test2:
        test2.remove('')
    print(test2)
    >>>['a', 'b', 'c']
    #第二种
    test2_new = [i for i in test2 if i != ''] #生成一个新的列表

    复制代码

    即删除列表中指定元素建议使用上述两种方法,不要用for循环。

    上面记录是写代码时踩的坑,有不严谨或者错误的地方期望大家指正。

    展开全文
  • Python删除列表中所有的空元素

    万次阅读 2018-04-29 16:08:55
    Python删除列表中所有的空元素 1. 删除None值 mylist = ["asas", "cfdsgfdas", None, "csdfew"] while None in mylist: mylist.remove(None) des = " ".join...

    Python 中删除列表中所有的空元素

    1. 删除None值

    mylist = ["asas", "cfdsgfdas", None, "csdfew"]
    while None in mylist:
        mylist.remove(None)
    des = " ".join(mylist)
    print(des)
     mylist = ["asas", "cfdsgfdas", None, "csdfew"]
     mylist2 = []
     for var in mylist:
         if var!=None:
             mylist2.append(var)
     mylist = mylist2
     des = " ".join(mylist)
     print(des)

    2. 删除’ ‘值

    while ' ' in mystr:
        mystr.remove(None)
    展开全文
  • python列表元素删除操作中, del, pop(), remove()很容易混淆, 下面对三个语句/方法作出解释 del语句 del语句可以删除任何位置处的列表元素, 若知道某元素在列表中的位置则可使用del语句. 例: >>> a = [3, 2, 2...
  • 请依次把这 5 个人分别从 black_list 当中删除,最后 black_list 为。(不要使用 clear) black_list = ['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机'] for i in range(0,len(black_list)): black_list....
  • 删除列表中的空元素 本以为挺简单的,一顿操作之后,再加上网上的资料,还有点小复杂。 以案例来说,更清晰些,做个学习笔记。 list_eg = ['',' ','hello','\n','world','\t'] print(list_eg) 输出如下 ['', ' ', '...
  • 主要介绍了Python如何优雅删除字符列表空字符及None元素,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • while '' in list: list.remove('') 转载于:https://www.cnblogs.com/z-x-y/p/9792634.html
  • python列表循环中删除元素有坑

    千次阅读 2018-09-13 10:32:26
    python在循环列表删除元素出现漏删 在python3.5版本测试 发现在列表循环的过程中删除元素的时候,第二个元素会无法删除,出现漏删的情况 python2.7版本同样出现相同的问题 看网上解释为 当第...
  • 特定情况会使用split函数对字符串切割,切割的结果为列表,可能会出现空字符串元素,例如: a = '我再学些pythonpython学起来真的很简单,你有...以逗号切割后,最后一个逗号会称为空元素,这是可以使用 filter...
  • python删除列表元素remove,pop,del

    千次阅读 2018-11-26 13:44:57
    python删除列表元素 觉得有用的话,欢迎一起讨论相互学习~Follow Me remove 删除单个元素删除首个符合条件的元素,按值删除,返回值为 List_remove = [1, 2, 2, 2, 3, 4] print(List_remove.remove(2)) print(&...
  • while ” in a: ...其中a为列表,之所以碰到这个问题是由于在从excel读数据时,有些列的长度不相等,当把短的列转换为列表时,会出现有空数据。 另外常见的读取excel的方法有http://blog.csdn.net/a_ran/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 532
精华内容 212
关键字:

python列表删除空元素

python 订阅