python if语句的简写和/或简写

时间:2017-05-03 00:17:29

标签: python if-statement comparison shortcut

如果要对多个值进行相同的比较,是否有在if语句中编写比较的简便方法。只是好奇这是否有可能。谢谢你的帮助!

a =1
b =1
c =1

if a == 1 and b ==1 and c == 1:
    print('yes')

# It would be nice if you could do this or something like it.
if a,b,c == 1:
    print('this would be easier')

2 个答案:

答案 0 :(得分:4)

您可以all使用and

# same as:
# if a == 1 and b == 1 and c == 1:
if all(x == 1 for x in (a, b, c)):
    ...

或者您可以使用操作员链接:

if a == b == c == 1:
    ...

但我在实际代码中并没有看到这一点。

对于or,您可以使用any

# same as:
# if a == 1 or b == 1 or c == 1:
if any(x == 1 for x in (a, b, c)):
    ...

据我所知,尽管你可以使用in,但没有操作员链接技巧:

if 1 in (a, b, c):
    ...

这确实有一些性能影响(即它只是为了比较而产生一个新的元组)。通常情况下,这是相当便宜的,除了最严格的循环之外,在任何事情上都不会显而易见。

答案 1 :(得分:1)

如果值是可以清除的话:

if set((a, b, c)) == {1}:
    # All are 1.

或者如果所有3个值都是非负整数,可以将它们全部相乘并查看结果是否为1?

if a * b * c == 1:
    # All are 1.

一般答案是all(..)和mgilson的回答一样。