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

看看下述代码:

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

输出:

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

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


1. 利用过滤器筛选空内容(推荐——删除指定元素【含删除空内容】)

  • 1.1 删除空内容(方法一)

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

    输出:

    ['陈凯歌', '徐克', '林超贤', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '朱亚文#梅生', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '张涵予#宋时轮', '黄轩#毛岸英']
    
  • 1.2 删除空内容(方法二)
    需要配合 lambda 表达式一起使用!

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

    输出:

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

    letters = ['a', 'b', 'c', 'a', 'b', 'a', 'a', 'd']
    print(f'原列表内容:{letters}')
    print('删除元素a:', list(filter(lambda x: x != 'a', letters)))
    

    输出:

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

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

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

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

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

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

  • 3.1 删除空内容

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

    输出:

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

    输出:

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

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

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值