为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容3067478 2019-07-08 15:04:05
从字符串列表中删除空字符串我希望从python中的字符串列表中删除所有空字符串。我的想法是这样的:while '' in str_list:     str_list.remove('')还有更多的仿生方法吗?
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

我会用filter:

str_list = filter(None, str_list) # fastest

str_list = filter(bool, str_list) # fastest

str_list = filter(len, str_list)  # a bit slower

str_list = filter(lambda item: item, str_list) # slower than list comprehension

Python 3返回一个迭代器。filter,所以应该在调用list()


str_list = list(filter(None, str_list)) # fastest

(等。)


测试:


>>> timeit('filter(None, str_list)', 'str_list=["a"]*1000', number=100000)

2.4797441959381104

>>> timeit('filter(bool, str_list)', 'str_list=["a"]*1000', number=100000)

2.4788150787353516

>>> timeit('filter(len, str_list)', 'str_list=["a"]*1000', number=100000)

5.2126238346099854

>>> timeit('[x for x in str_list if x]', 'str_list=["a"]*1000', number=100000)

13.354584932327271

>>> timeit('filter(lambda item: item, str_list)', 'str_list=["a"]*1000', number=100000)

17.427681922912598


查看完整回答
反对 回复 2019-07-08
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

清单理解

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

产出:['first', 'second']

编辑:按建议缩短


查看完整回答
反对 回复 2019-07-08
  • 3 回答
  • 0 关注
  • 1728 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信