Mer*_*ury 113
完整示例(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
print(newlist)
Run Code Online (Sandbox Code Playgroud)
打印:
['cat', 'wildcat', 'thundercat']
Run Code Online (Sandbox Code Playgroud)
注意:
对于Python 2.x用户,filter
已经返回一个列表.在Python 3.xfilter
被更改为返回一个迭代器,所以它必须转换为list
(为了看到它很好地打印).
sep*_*p2k 94
您可以使用以下命令在Python 3.x中创建迭代器或在Python 2.x中创建列表:
filter(r.match, list)
Run Code Online (Sandbox Code Playgroud)
要将Python 3.x 迭代器转换为列表,只需转换它; list(filter(..))
.
小智 5
要在不首先编译 Regex 的情况下执行此操作,请使用一个lambda
函数 - 例如:
from re import match
values = ['123', '234', 'foobar']
filtered_values = list(filter(lambda v: match('^\d+$', v), values))
print(filtered_values)
Run Code Online (Sandbox Code Playgroud)
返回:
['123', '234']
Run Code Online (Sandbox Code Playgroud)
filter()
只需将 acallable
作为第一个参数,并返回一个列表,其中该可调用对象返回一个“真实”值。