我如何在python中使用另一个列表过滤列表

-2 python list filter

我是python的新手,基本上我需要过滤并获取listB中存在的listA中的所有项目.

listA = ['cat','dog','cow']

listB = ['sentence 1','sentence 2 contains cat','sentence 3',
         'sentence 4','sentence 5','sentence 6 contains dog']

result = ['sentence 2 contains cat','sentence 6 contains dog']
Run Code Online (Sandbox Code Playgroud)

Kos*_*dis 6

它可以这么简单,使用列表理解:

>>> lst = [x for x in listB for a in listA if a in x]
>>> lst
['sentence 2 contains cat', 'sentence 6 contains dog']
Run Code Online (Sandbox Code Playgroud)

编辑:这与Ollie的解决方案基本相同,但运行速度提高约8-10%.对于双向比较,只需替换if a in xif (a in x) or (x in a)(为清晰起见而添加括号).