从字符串列表中删除空字符串

2022-09-05 01:17:28

我想从python中的字符串列表中删除所有空字符串。

我的想法是这样的:

while '' in str_list:
    str_list.remove('')

有没有更多的pythonic方法来做到这一点?


答案 1

我会使用过滤器

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 从 返回一个迭代器,因此应包装在对filterlist()

str_list = list(filter(None, str_list))

答案 2

使用列表理解是最Pythonic的方式:

>>> strings = ["first", "", "second"]
>>> [x for x in strings if x]
['first', 'second']

如果必须就地修改列表,因为还有其他引用必须查看更新的数据,则使用切片分配:

strings[:] = [x for x in strings if x]