Python 检查列表中是否有一项在列表列表中

Python 检查列表中是否有一项在列表列表中,python,Python,假设我有一个列表,例如: my_list = [['ab', 'bc'], ['cd', 'de'], ['ef', 'fg'], ['gh', 'hi']] 然后,我会列出一个禁忌词列表,例如: no_go_list = ['ab', 'fg'] 我想做的是获取一个列表,其中它检查no\u go\u list中的至少一个项目是否在my\u list中的一个列表中,因此结果应该是: final_list = [['cd', 'de'], ['gh', 'hi']] 我想这样做: final

假设我有一个列表,例如:

my_list = [['ab', 'bc'], ['cd', 'de'], ['ef', 'fg'], ['gh', 'hi']]
然后,我会列出一个禁忌词列表,例如:

no_go_list = ['ab', 'fg']
我想做的是获取一个列表,其中它检查
no\u go\u list
中的至少一个项目是否在
my\u list
中的一个列表中,因此结果应该是:

final_list = [['cd', 'de'], ['gh', 'hi']]
我想这样做:

final_list = [l for l in my_list if not no_go_list in l]

但这会检查两个
no\u go\u列表
项是否都存在。所以我猜这需要一些修改,我只是不知道怎么做。

您需要检查
no\u go\u list
中的任何项目是否在元素中。因此,“显而易见”的方法是使用
any
函数

final_list = [l for l in my_list 
                if not any(word in l for word in no_go_list)]
您发布的代码不会检查两个项目是否都存在:它会检查列表值是否存在。你需要像这样的东西

my_list = [[['ab', 'fg'], 'bc'], ['cd', 'de'], 
            ['ef', ['ab', 'fg']], ['gh', 'hi']]
你可以用一套

>>> list(filter(set(no_go_list).isdisjoint, my_list))
[['cd', 'de'], ['gh', 'hi']]
“显然,检查两个禁止进入列表项目是否都存在”-这对我来说并不明显…我看到你删除了“显然”这个词。这不是问题所在。问题是你的陈述是错误的。