我想根据正则表达式过滤列表中的字符串。
有没有比 [x for x in list if r.match(x)]
更好的东西?
原文由 leoluk 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想根据正则表达式过滤列表中的字符串。
有没有比 [x for x in list if r.match(x)]
更好的东西?
原文由 leoluk 发布,翻译遵循 CC BY-SA 4.0 许可协议
完整示例(Python 3):
对于 Python 2.x,请查看下面的注释
import re
mylist = ["dog", "cat", "wildcat", "thundercat", "cow", "hooo"]
r = re.compile(".*cat")
newlist = list(filter(r.match, mylist)) # Read Note below
print(newlist)
印刷:
['cat', 'wildcat', 'thundercat']
笔记:
对于 Python 2.x 开发人员, filter
已经返回一个列表。在 Python 3.x 中 filter
被更改为返回一个迭代器,所以它必须被转换为 list
(为了看到它打印得很好)。
原文由 Mercury 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答854 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
您可以使用以下命令在 Python 3.x 中创建 迭代器 或在 Python 2.x 中创建 列表:
要将 Python 3.x 迭代器 转换为列表,只需转换它;
list(filter(..))
。