看看下述代码:
celebrities = ['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
print(celebrities)
输出:
['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
当你遇见这种情况,有哪些方法来去除里面的空内容呢(即 ''
)?
celebrities = ['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
print(list(filter(None, celebrities)))
输出:
['陈凯歌', '徐克', '林超贤', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '朱亚文#梅生', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '张涵予#宋时轮', '黄轩#毛岸英']
注:此方法只能删除空值,不能删除指定元素~
celebrities = ['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
print([celebrity for celebrity in celebrities if celebrity])
['陈凯歌', '徐克', '林超贤', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '朱亚文#梅生', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '张涵予#宋时轮', '黄轩#毛岸英']
celebrities = ['', '陈凯歌', '', '徐克', '林超贤', '', '', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '', '朱亚文#梅生', '', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '', '', '张涵予#宋时轮', '', '黄轩#毛岸英']
print([celebrity for celebrity in celebrities if celebrity != ''])
['陈凯歌', '徐克', '林超贤', '吴京#伍千里', '易烊千玺#伍万里', '段奕宏#谈子为', '朱亚文#梅生', '李晨#余从戎', '胡军#雷公', '韩东君#平河', '张涵予#宋时轮', '黄轩#毛岸英']
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.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']
注:此方法既可以删除空元素,也可以删除指定元素~