你如何在条件中使用OR,AND?

Gia*_*nou 12 python conditional

我已经发现自己很多次,我需要全部或至少一个等于某事的东西,我会写出类似的东西:

if a==1 and b==1:
   do something
Run Code Online (Sandbox Code Playgroud)

要么

if a==1 or b==1:
   do something
Run Code Online (Sandbox Code Playgroud)

如果事情的数量很小就可以了,但它仍然不是很优雅.所以,对于大量的事情,是否有更好的方法,做上述事情?谢谢.

Mar*_*ers 27

选项1:任何/所有

对于一般情况,请看看anyall:

if all(x == 1 for x in a, b, c, d):

if any(x == 1 for x in a, b, c, d):
Run Code Online (Sandbox Code Playgroud)

您还可以使用任何可迭代的:

if any(x == 1 for x in states):
Run Code Online (Sandbox Code Playgroud)

选项2 - 链接和

对于第一个示例,您可以使用布尔运算符链接:

if a == b == c == d == 1:
Run Code Online (Sandbox Code Playgroud)

对于您的第二个示例,您可以使用in:

if 1 in states:
Run Code Online (Sandbox Code Playgroud)

选项3:任何/所有没有谓词

如果你只关心价值是否真实,你可以进一步简化:

if any(flags):

if all(flags):
Run Code Online (Sandbox Code Playgroud)

  • 元组比列表便宜得多 (3认同)
  • `[a,b,c,d]中的1不是那么大; `1 in(a,b,c,d)`.仅在需要下一步列表的位置时首选列表文字. (2认同)