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

删除空列表元素

删除空列表元素

蓝山帝景 2021-08-05 17:48:43
我有一个源代码列表,正在查看它以查找匹配的字符串并返回列表中的所有匹配项。问题是每次找不到匹配项时我都会得到一个空列表元素。例如: ["matchone","",matchtwo"", .....]代码如下所示:    name_match = re.compile("\s\w+\(")    match_list = []    match_list_reformat = []   for x in range(0,30):       if name_match.findall(source_code[x]) != None:        match_list.append(gc_name_match.findall(source_code[x]))        format = "".join([c for c in match_list[x] if c is not '(']).replace("(", "")        match_list_reformat.append(format)return match_list_reformat使用“if name_match.findall(source_code[x]) != None:”不会改变结果。在旁注。我怎样才能用这个 def 浏览源代码的所有行?range(0,30) 只是一种解决方法。
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

最简单的没有re,因为 Python 3 从过滤器返回一个迭代器,所以应该包装在对list()


>>> mylst

['matchone', '', 'matchtwo', '', 'matchall', '']


>>> list(filter(None, mylst))

['matchone', 'matchtwo', 'matchall']

过滤 速度最快。


从文件:


filter(function, iterable) 从那些函数返回 true 的 iterable 元素构造一个迭代器。iterable 可以是一个序列、一个支持迭代的容器或一个迭代器。如果 function 为 None,则假定恒等函数,即删除所有为 false 的 iterable 元素。


注意 filter(function, iterable) 等价于生成器表达式(item for item in iterable if function(item)) if function is not None and (item for item in iterable if item) if function is None。


查看完整回答
反对 回复 2021-08-05
  • 2 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

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