Python 列表理解,用于识别两个列表之间的字符串匹配

Python 列表理解,用于识别两个列表之间的字符串匹配,python,list-comprehension,Python,List Comprehension,我正在使用列表理解来过滤list\u a(一个大列表)中包含list\u b(另一个大列表)中任何字符串的字符串。我已经能够成功地使用下面的代码生成列表a中具有此类匹配项的项目列表: list_a_results = [s for s in list_a if any(xs in s for xs in list_b)] 现在,我正在尝试做我认为是相反的过程,即,识别列表中的每个项目,这些项目显示在列表结果中列出的每个字符串中。有没有一种巧妙的方法来使用列表理解来实现这一点 我试图完成的一个例

我正在使用列表理解来过滤
list\u a
(一个大列表)中包含
list\u b
(另一个大列表)中任何字符串的字符串。我已经能够成功地使用下面的代码生成列表a中具有此类匹配项的项目列表:

list_a_results = [s for s in list_a if any(xs in s for xs in list_b)]
现在,我正在尝试做我认为是相反的过程,即,识别
列表中的每个项目,这些项目显示在
列表结果中列出的每个字符串中。有没有一种巧妙的方法来使用列表理解来实现这一点

我试图完成的一个例子:当给出:

list_a_results = ['abc def ghi jkl', 'mno pqr', 'stu', 'vwx yz']
list_b = ['abc', 'ghi', 'pqr', 'stu', 'vwx', 'yz']
我希望能够生成以下内容:

matches_in_list_a = [['abc', 'ghi'], 'pqr', 'stu', ['vwx','yz']]

几乎是一个逐字的解决方案:对于b中的每个元素b,s.t.a中的每个元素a都在b中

# constant depth result
res = [[s for s in list_b if s in a] for a in list_a_results]
# [['abc', 'ghi'], ['pqr'], ['stu'], ['vwx', 'yz']]

# desired output
itr = ([s for s in list_b if s in a] for a in list_a_results)
res2 = [x.pop() if len(x) == 1 else x for x in itr]
# [['abc', 'ghi'], 'pqr', 'stu', ['vwx', 'yz']]

A在这里会有帮助的。您是否正在查找
列表结果=[b代表列表中的b(如果有)(b代表列表中的a)]
?可能有一个更有效的解决方案,但如果没有具体的例子,就很难判断。@pault刚刚添加了一个例子-lmk,如果这有帮助的话!这正是我想要的。谢谢你的建议,我一直在错误地解释清单理解,这澄清了它。