如果要对多个值进行相同的比较,是否有在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')
答案 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的回答一样。