说我有两个清单:
list1 = ['a', 'b']
list2 = ['cat', 'dog', 'bird']
什么是摆脱list2中包含list1中任何子字符串的任何项目的最佳方法? (在这个例子中,只剩下'dog'。)
答案 0 :(得分:3)
您可以将list comprehension与any()运算符一起使用。如果列表1中的任何项目(字符串)在所选单词中,您将浏览第二个列表中的项目,我们不会接受它。否则,我们添加它。
list1 = ['a', 'b']
list2 = ['cat', 'dog', 'bird']
print [x for x in list2 if not any(y for y in list1 if y in x)]
输出:
['dog']
您也可以使用filter()
。
print filter(lambda x: not any(y for y in list1 if y in x), list2)
答案 1 :(得分:0)
您可以使用正则表达式来完成这项工作。
import re
pat = re.compile('|'.join(list1))
res = []
for str in list2:
if re.search(pat, str):
continue
else:
res.append(str)
print res