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

Python中两个列表中字符串中的常用字符,python,string,list,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] 我通常使用上面的列表理解来查找两个列表之间的公共元素。但是,在上面的场景中,它失败了,因为in函数进行了精确匹配,因此c是一个空列表。我如何绕过这一点,并尝试获得一个如下所示的列表c: c=["Ron is grea

我有两份清单如下:

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]
我通常使用上面的列表理解来查找两个列表之间的公共元素。但是,在上面的场景中,它失败了,因为in函数进行了精确匹配,因此c是一个空列表。我如何绕过这一点,并尝试获得一个如下所示的列表c:

c=["Ron is great", "Mark is good"]

使用列表表达式解决了您的问题

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

使用列表表达式解决了您的问题

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

例如,您将需要两个循环

c = [item for item in a
     if any(name in item for name in b)]

应该足够了。例如,您需要两个循环

c = [item for item in a
     if any(name in item for name in b)]
应该足够了。

你可以这样试试

>>> 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']
>>> 
你可以这样试试

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