检查是否不在列表中 - Python中的更多条件

Jaj*_*aja 4 python list python-3.x

我有两个没有固定数量的项目列表,例如:

data=['sun','stars','moon','supermoon','planet','comet','galaxy']

forbidden=['mo','st','lax']
Run Code Online (Sandbox Code Playgroud)

我只需要打印那些data不包含任何字符串的项目forbidden.在这种情况下,输出将是

sun
planet
comet
Run Code Online (Sandbox Code Playgroud)

我尝试的是

print [x for x in data if forbidden not in x ]
Run Code Online (Sandbox Code Playgroud)

仅适用于一个条件(forbidden列表中的一个项目)

有没有办法一次检查所有条件?

如果我知道forbidden我可以使用的物品数量

print [x for x in data if forbidden[0] not in x and forbidden[1] not in x]
Run Code Online (Sandbox Code Playgroud)

但它不适用于未知数量的项目.

谢谢你的帮助.

Aja*_*234 5

你可以使用all:

data=['sun','stars','moon','supermoon','planet','comet','galaxy']
forbidden=['mo','st','lax']
print([i for i in data if all(c not in i for c in forbidden)])
Run Code Online (Sandbox Code Playgroud)

输出:

['sun', 'planet', 'comet']
Run Code Online (Sandbox Code Playgroud)