Python中2个列表中字符串中的常用字符

时间:2014-09-26 12:40:18

标签: python string list

我有两个列表如下:

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

3 个答案:

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