测试三个值的相等性

时间:2012-12-10 17:25:08

标签: python

这是否符合我的想法?在我看来是的。我要求确定。

if n[i] == n[i+1] == n[i+2]:
    return True

这些是否相等?

if n[i] == n[i+1] and n[i+1] == n[i+2]:
    return True

7 个答案:

答案 0 :(得分:40)

等效但不等于,因为访问只执行一次。 Python自然地将关系运算符链接起来(包括inis)。

显示细微差别的最简单方法:

>>> print(1) == print(2) == print(3)
1
2
3
True
>>> print(1) == print(2) and print(2) == print(3)
1
2
2
3
True

答案 1 :(得分:11)

是的,但是,当比较被链接时,公共表达式被评估一次,当使用and时,它被评估两次。在这两种情况下,如果第一个比较为假,则不评估第二个比较,例如docs

  

比较可以任意链接,例如,x <1。 y&lt; = z是等价的   到x&lt; y和y&lt; = z,除了y仅被评估一次(但在两者中)   当x

答案 2 :(得分:3)

是的,你是对的....

你也可以

5 > x > 1

1 < x < 5

答案 3 :(得分:2)

是的,在python的内部,比较运算符返回也不是true也不是false,它们反而返回'比较结果'对象(不能记住类名,它过去相当),而且这个对象提供了 _ lt _ _ gt _ _ eq _ 等等方法并对最终结果“负责”(并且'比较结果'在语句结束时转换为True或False)。这是python为你提供的语义控制的魔力:)

答案 4 :(得分:2)

正如其他人回答的那样,答案是肯定的。但是:请注意不要添加括号。例如:

>>> 1 == 2 == 0
False
>>> (1 == 2) == 0
True

在第二种情况下,由于Python允许将布尔值与整数进行比较,因此(1 == 2)的计算结果为False,然后False == 0的计算结果为True

类似:

>>> 0 == 0 == 1
False
>>> (0 == 0) == 1
True

答案 5 :(得分:1)

似乎您也可以将==与!=链接起来

OkVHOjo7WlhRTFsyMS5xMz5zMDE6IDE2OjI1OjE2XQpbVF2bUl2bSV2bT22bSF2bSl2bUl2bSV2bT22bVF2bUl2bTV2bTl2bQl2bT22bVF2bSV2bUl2bQl2bTl2bUl2bVF2bT22bSV2bQl2bTl2bT22bUl2bVF2bSV2bQl2bTl2bUl2bVF2bSV2bT22bSl2bTl2bQl2bVF2bUl2bSV2bT22bQl2bSl2bUl2bVF2bSV2bQl2bSl2bUl2bVF2bT22bSV2bQl2bSl2bTV2bR22bSV2bVF2bVV2bRF2bTF2bSF2bR22bQl2bVV2bUl2bSV2bRl2bT22bTF2bRF2bS22bR22bSF2bRl2bRF2bR22bSF2bRF2bUl2bS22bTF2bR22bSF2bQl2bRl2bRF2bWF2bSl2bTF2bR22bSF2bS22bTF2bSl2bSF2bQl2bUl2bT22bVV2bSF2bSl2bQl2bTl2bSV2bUl2bRV2bVF2bQl2bSF2bSl2bVl2bTl2bVV2bSV2bRl2bR22bS22bR22bQl2bSF2bRl2bSV2bVV2bR22bSF2bRl2bSV2bVV2bVF2bTF2bRF2bSF2bRl2bVV2bR22bQl2bTl2bSl2bRl2bSV2bVV2bRF2bSF2bVF2bUl2bVV2bSl2bTF2bUl2bRF2bR22bSF2bSl2bVF2bUl2bRF2bT22bTF2bSF2bVV2bSl2bRF2bUl2bVF2bSV2bT22bVV2bSF2bUl2bRF2bVF2bVV2bSV2bSF2bSl2bUl2bVF2bVV2bSV2bRF2bSl2bSF2bSl2bVF2bVV2bSV2bUl2bRF2bSF2bTF2bVV2bVF2bUl2bRF2bSF2bVF2bRF2bVV2bUl2bSV2bSF2bVF2bRF2bUl2bSV2bSF2bVF2bSF2bRF1KOlpBZXJQTGdmc3RlY4J6cHQ3OTY=

答案 6 :(得分:0)

您可以使用集合收集来测试相等性

len(set({a,b,c}) == 1

enter image description here