jus*_*ino 8 python conditional-operator python-3.x
可能重复:
Python检查列表中是否包含以下所有项目
所以我想测试word和word1是否都在列表中.当然,我可以写:
if word in lst and word1 in lst:
do x
Run Code Online (Sandbox Code Playgroud)
但我想知道我是否可以将该陈述缩短为:
if (word and word1) in lst:
do x
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用,但有什么有效的相似之处呢?
我尝试了以下内容,但正如您所看到的,它不会产生预期的结果.
>>> word in lst
True
>>> word1 in lst
True
>>> (word, word1) in lst
False
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢你的答案,我想我现在已经很清楚如何做到这一点.
答案是正确的(至少其中一个是).但是,如果您正在进行遏制检查而不关心订单,就像您的示例可能建议的那样,真正的答案是您应该使用集合并检查子集.
words = {"the", "set", "of", "words"}
if words <= set_of_words:
do_stuff()
Run Code Online (Sandbox Code Playgroud)
列出您的单词和生成器表达式,检查它们是否在列表中:
words = ["word1", "word2", "etc"]
lst = [...]
if all((w in lst for w in words)):
#do something
Run Code Online (Sandbox Code Playgroud)
all检查iterable中的所有值是否都为真.因为我们使用发电机,所以它仍然是短路优化的.当然,如果单词列表不太大,你可以内联单词列表:
if all((w in lst for w in ["word1", "word2", "etc"])):
...
Run Code Online (Sandbox Code Playgroud)