==与Python中的运算符相对

时间:2012-06-25 06:36:10

标签: python if-statement equals

我对python中的比较运算符有疑问。我想知道这是对还是错。

我有一些分配给变量的输出。所以我们说:

result1, result2, result3

现在我进行比较,如

if result1 == 0 and result2 == 0 and result3 == 0: 
    print "Success "
else:
    print "failure"

我怀疑这种比较可以用这种格式进行

if 0 in (result1 , result2 ,result3):
    print "Success"
else :
    print "failure"

使用Python是正确的吗?如果没有,那么原因是什么?

4 个答案:

答案 0 :(得分:6)

您可以进行比较,但您的第二次比较与第一次比较不同。

当每个变量为0时,此比较仅为True

if result1 == 0 and result2 == 0 and result3 == 0:

当至少有一个变量为0时,此比较为True

if 0 in (result1, result2, result3):

正如您所看到的,这不是完全相同的比较。要执行相同的比较,您可以执行以下操作:

if (0, 0, 0) == (result1, result2, result3):

答案 1 :(得分:5)

if 0 in (result1, result2, result3):

相当于:

if result1==0 or result2==0 or result3==0:

你想要的是这个:

if (0,0,0) == (result1, result2, result3):

相当于:

if result1==0 and result2==0 and result3==0:

你甚至可以这样做:

if result1==result2==result3==0:

因为你正在检查所有3个变量是否相同。

答案 2 :(得分:4)

在你的第二个例子中,如果任何值为“0”,它将被评估为“True”,并且不等于and

如果您有多个结果并想确认它们是否都匹配给定值,我建议使用all()函数:

results = [0, 1, 0]
if all(result == 0 for result in results):
    print "Success"
else:
    print "Failure"

或使用any()

if not any(results):
    print "Success"
...

然而,这个反向逻辑通常很难让我首先理解,也许检查存在比不存在更加pythonic。因此,如果您更改逻辑以检查是否存在,您只需编写:

if all(results):
    print "Success"
else:
   print "Failure" 

答案 3 :(得分:0)

也许做一个可变函数?

def allZero(*args):
    for elem in args:
        if elem != 0:
            return False
    return True

if allZero(result1, result2, result3):
    return "Success"
else: 
    return "Failure"

然后,您可以根据需要一次测试尽可能多的resultN