首页 > 解决方案 > 我如何在python中用另一个列表过滤一个列表

问题描述

我对 python 很陌生,基本上我需要过滤并获取 listA 中存在于 listB 中的所有项目。

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']

标签: pythonlistfilter

解决方案


它可以像这样简单,使用列表推导:

>>> lst = [x for x in listB for a in listA if a in x]
>>> lst
['sentence 2 contains cat', 'sentence 6 contains dog']

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


推荐阅读