我试图在一个大列表中搜索,根据我收集到的信息,使用集合而不是普通列表的速度非常快。我的难题是使用if语句和regex来查找列表中的字符串。
我试过以下几种:
import re
search = re.compile('[edits')
if search in set(list):
print('found')
我创建了一个列表,其中有'[editinterfaces]'作为元素,但它似乎找不到它
我想这可能就是您想要的
search = re.compile('[edits')
l1 = ["that", '[edit interfaces]', "that"]
for v in set(l1):
if re.search(search, v):
print('found ' + v)
您必须检查集合中的元素,看看它们是否与正则表达式匹配。您只需在for循环中进行一次简单的检查就可以做到这一点。
我认为也许您可以省略将列表更改为集合的操作,而使用python的内置过滤器函数。
import re
search = re.compile('[edits')
l1 = ["that", '[edit interfaces]', "that"]
res = filter(lambda x : re.search(search, x), l1)
print(list(res))
这种方法避免了在列表中循环,并使用python内置的快速函数。