我想从 python 中的字符串列表中删除所有空字符串。
我的主意如下所示:
while '' in str_list:
str_list.remove('')
还有其他 pythonic 方法可以做到这一点吗?
我会使用filter
:
str_list = filter(None, str_list)
str_list = filter(bool, str_list)
str_list = filter(len, str_list)
str_list = filter(lambda item: item, str_list)
Python 3 从filter
返回一个迭代器,因此应包装在对list()
str_list = list(filter(None, str_list))
使用 列表理解是最 Python 的方式:
>>> strings = ["first", "", "second"]
>>> [x for x in strings if x]
['first', 'second']
如果列表必须就地修改,因为还有其他引用必须查看更新后的数据,请使用分片分配:
strings[:] = [x for x in strings if x]
过滤器实际上对此有一个特殊的选择:
filter(None, sequence)
它将滤除所有评估为 False 的元素。此处无需使用实际的可调用对象,例如 bool,len 等。
和 map(bool,...)一样快