我有两个列表如下:
a = ["Ron is great", "Mark is good", "Sheela is bad", "Amy is horrible"]
b = ["Ron", "Mark"]
c = [item for item in a if item in b]
我通常使用上面的列表理解来查找2个列表之间的公共元素。但是在上面的场景中它失败了,因为IN函数完全匹配,因此c是一个空列表。如何绕过这个并尝试获取列表c看起来像这样:
c=["Ron is great", "Mark is good"]
答案 0 :(得分:4)
您需要两个循环,例如
c = [item for item in a
if any(name in item for name in b)]
应该足够了。
答案 1 :(得分:2)
使用列表表达式解决了您的问题
>>> a = ["Ron is great", "Mark is good", "Sheela is bad", "Amy is horrible"]
>>> b = ["Ron", "Mark"]
>>> c= [
... sentence
... for word in b
... for sentence in a
... if word in sentence
... ]
['Ron is great', 'Mark is good']
答案 2 :(得分:1)
你可以这样试试,
>>> a = ["Ron is great", "Mark is good", "Sheela is bad", "Amy is horrible"]
>>> b = ["Ron", "Mark"]
>>> [ item for item in a for word in b if word in item]
['Ron is great', 'Mark is good']
>>>