我有 2 个列表。
a = ['this;mango', 'is:red', 'test;cat']
b = ['man', 'is', 'can']
我想遍历 b 的每个元素并检查该字符串是否存在于列表 a 中。我怎样才能做到这一点 ?
对于上面的示例输出将是:
# is
请您参考如下方法:
a = ['this;mango', 'is:red', 'test;cat']
b = ['man', 'is', 'can']
import re
for elem in b:
for test in a:
if re.search(r'\b' + re.escape(elem) + r'\b', test):
print elem
使用列表理解:
>>> a = ['this;mango', 'is:red', 'test;cat']
>>> b = ['man', 'is', 'can']
>>>
>>> import re
>>> [elem for elem in b if any(re.search(r'\b' + re.escape(elem) + r'\b', test) for test in a)]
['is']
另一个带有 map 和 lambda 的版本可以避免 a 上的 explicit 循环:
>>> [elem for elem in b if any(map(lambda test: re.search(r'\b' + re.escape(elem) + r'\b', test), a))]
['is']
