• python 一次性删除列表(list)的空白元素(空内容) 或者 一次性删除列表(list)中的指定元素


    看看下述代码:

    celebrities = ['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
    print(celebrities)
    
    • 1
    • 2

    输出:

    ['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
    
    • 1

    当你遇见这种情况,有哪些方法来去除里面的空内容呢(即 '')?


    1. 利用过滤器筛选空内容(推荐——删除空内容)

    celebrities = ['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
    
    print(list(filter(None, celebrities)))
    
    • 1
    • 2
    • 3

    输出:

    ['陈凯歌', '徐克', '林超贤', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '朱亚文#梅生', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '张涵予#宋时轮', '黄轩#毛岸英']
    
    • 1

    :此方法只能删除空值,不能删除指定元素~

    2. 利用列表生成式(推荐——删除指定元素【含删除空内容】)

    • 2.1 删除空内容(方法一)
      celebrities = ['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
      
      print([celebrity for celebrity in celebrities if celebrity])
      
      • 1
      • 2
      • 3
      输出:
      ['陈凯歌', '徐克', '林超贤', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '朱亚文#梅生', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '张涵予#宋时轮', '黄轩#毛岸英']
      
      • 1
    • 2.2 删除空内容(方法二)
      celebrities = ['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
      
      print([celebrity for celebrity in celebrities if celebrity != ''])
      
      • 1
      • 2
      • 3
      输出:
      ['陈凯歌', '徐克', '林超贤', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '朱亚文#梅生', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '张涵予#宋时轮', '黄轩#毛岸英']
      
      • 1
    • 2.3 删除指定内容
      letters = ['a', 'b', 'c', 'a', 'b', 'a', 'a', 'd']
      print(f'原列表内容:{letters}')
      print('删除元素a:', [letter for letter in letters if letter != 'a'])
      
      • 1
      • 2
      • 3
      输出:
      原列表内容:['a', 'b', 'c', 'a', 'b', 'a', 'a', 'd']
      删除元素a: ['b', 'c', 'b', 'd']
      
      • 1
      • 2

    :此方法既可以删除空元素,也可以删除指定元素~

    3. 利用计数器和 remove 删除(不推荐——删除指定元素【含删除空内容】)

    • 3.1 删除空内容

      # (Counter 返回的是一个字典)
      from collections import Counter
      
      celebrities = ['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
      num = Counter(celebrities)['']  # 计算 celebrities 中空内容的个数
      
      for i in range(num):
          celebrities.remove('')  # 一次 remove 只能删除一个值
      print(celebrities)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9

      输出:

      ['陈凯歌', '徐克', '林超贤', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '朱亚文#梅生', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '张涵予#宋时轮', '黄轩#毛岸英']
      
      • 1
    • 3.2 删除指定内容

      from collections import Counter
      
      letters = ['a', 'b', 'c', 'a', 'b', 'a', 'a', 'd']
      num = Counter(letters)['a']  # 计算 letters 中元素 a 的个数
      for i in range(num):
          letters.remove('a')  # 一次 remove 只能删除一个值
      print(letters)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      输出:

      原列表内容:['a', 'b', 'c', 'a', 'b', 'a', 'a', 'd']
      删除元素a: ['b', 'c', 'b', 'd']
      
      • 1
      • 2

    :此方法既可以删除空元素,也可以删除指定元素~

  • 相关阅读:
    对一个变速器原理的分析
    全套3D游戏建模自学资料
    基于辐射转移模型的多层回归学习,用于估计高光谱图像中的阴影图(Matlab代码实现)
    OpenYurt环境搭建(遇到的各种坑和解决办法)
    cmmlu数据处理
    flutter Could not get unknown property ‘ndkVersion’
    vue官方文档(13)组件的局部注册
    企业需要什么样的数字化官网,网站建设模式及成功关键因素
    NVDIA GPU参数列表: 3090,4090, A40, A30,V100, A100, A800性能参数
    数据结构——优先队列c++详解
  • 原文地址:https://blog.csdn.net/senlin_6688/article/details/134488113