如何使if语句失败并具有多个条件

时间:2017-10-11 00:24:33

标签: python python-2.7

我有以下元组列表。我试图测试一个负面情况以使条件失败。

>>> regop = [('1000', '63', 'Untaggged', '1000')]

我正在尝试写一个条件:

>>> if int(regop[0][0]) != 1000 and int(regop[0][1]) != 63 and regop[0][2] != 'Untaggged' and int(regop[0][3]) == 100:
...  print "error"

在这种情况下,int(regop[0][3]) == 100False,其余3个条件为True,但由于我使用了and,因此if不应该条件失败并打印error?它打印Error。 我对这里出了什么问题毫无头绪。帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

如果您希望or触发评估为and任何条件,则需要if代替True

作为对当前解决方案的改进,我建议使用any

vals = (1000, 63, 'Untaggged', 100)
if any(x != y for x, y in zip(regop[0], vals)):
    print('error')
如果即使单个条件在生成器理解中求值为any

True也会返回True。相反,如果您希望仅当理解中的每个条件为any时结果为all,请将True替换为True

使用any / all消除了多次硬编码x1 != y1 or x2 != y2 or ...的需要,并产生简洁的代码。