如果项目与Python中另一个列表中的任何项目匹配,如何从列表中删除项目

时间:2014-11-14 00:32:03

标签: python python-3.x

说我有两个清单:

list1 = ['a', 'b']
list2 = ['cat', 'dog', 'bird']

什么是摆脱list2中包含list1中任何子字符串的任何项目的最佳方法? (在这个例子中,只剩下'dog'。)

2 个答案:

答案 0 :(得分:3)

您可以将list comprehensionany()运算符一起使用。如果列表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