测试三个值的相等性

gra*_*olf 52 python

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

if n[i] == n[i+1] == n[i+2]:
    return True
Run Code Online (Sandbox Code Playgroud)

这些是平等的吗?

if n[i] == n[i+1] and n[i+1] == n[i+2]:
    return True
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 46

等同于但不等于,因为访问仅执行一次.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
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是它们不一样,因为有可能设计出一个工作而另一个工作失败的情况(`n`是一个在访问后改变`n [i + 1]`值的对象).编辑:我在一个例子中编辑了以显示差异. (4认同)

iab*_*der 14

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

比较可以任意链接,例如,x <y <= z等于x <y和y <= z,除了y仅被评估一次(但在两种情况下,当x <y被发现时,根本不评估z是假的).


Aar*_*Lee 6

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

>>> 1 == 2 == 0
False
>>> (1 == 2) == 0
True
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,先(1 == 2)评估为False,然后再False == 0评估为True,因为Python允许将布尔值与整数进行比较。

同样地:

>>> 0 == 0 == 1
False
>>> (0 == 0) == 1
True
Run Code Online (Sandbox Code Playgroud)


Jor*_*ley 5

是的,你是对的 ....

你也可以这样做

5 > x > 1
Run Code Online (Sandbox Code Playgroud)

或者

1 < x < 5
Run Code Online (Sandbox Code Playgroud)