这和我想的一样吗?在我看来,是的。我要求确定。
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
这和我想的一样吗?在我看来,是的。我要求确定。
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
它等效于但不等于,因为访问只执行一次。Python 自然地链接关系运算符(包括in
and is
)。
显示细微差别的最简单方法:
>>> print(1) == print(2) == print(3)
1
2
3
True
>>> print(1) == print(2) and print(2) == print(3)
1
2
2
3
True
print()
总是返回None
,所以我们在None
这里所做的只是比较 s,所以结果总是True
,但是请注意,在第二种情况下,print(2)
被调用了两次,所以我们2
在输出中得到了两个 s,而在第一种情况下,使用了结果对于这两个比较,所以它只执行一次。
如果你使用没有副作用的纯函数,这两个操作最终会完全一样,但除此之外它们会有些不同。
是的,但是,当比较被链接时,公共表达式被评估一次,使用and
它时被评估两次。在这两种情况下,如果第一个比较为假,则不会评估第二个比较,例如来自文档:
比较可以任意链接,例如,x < y <= z 等价于 x < y 和 y <= z,除了 y 只计算一次(但在这两种情况下,当找到 x < y 时根本不计算 z是假的)。
正如其他人的回答,答案是肯定的。但是:小心添加括号。例如:
>>> 1 == 2 == 0
False
>>> (1 == 2) == 0
True
在第二种情况下,(1 == 2)
计算结果为False
,然后False == 0
计算结果为True
,因为 Python 允许将布尔值与整数进行比较。
同样地:
>>> 0 == 0 == 1
False
>>> (0 == 0) == 1
True
是的,你是对的 ....
你也可以
5 > x > 1
或者
1 < x < 5
您可以使用集合来测试相等性
>>> a, b, c = 2, 2, 2
>>> len({a, b, c}) == 1
True
>>> a, b, c = 2, 2, 3
>>> len({a, b, c}) == 1
False
是的,在 python 的内部,比较运算符既不返回 true 也不返回 false,而是返回“比较结果”对象(不记得类名,这是过去的事了),这个对象提供了_ lt _,_ gt _ , _ eq _ etc 等方法,并对最终结果“负责”(并且“比较结果”在语句结束时转换为 True 或 False)。这是 python 为您提供的语义控制的魔力 :)
看来您也可以将 == 与 != 链接起来:
>>> a = b = c = 1
>>> a == b == c
True
>>> a == b == c == 1
True
>>> a == b == c == 2
False
>>> a == b == c != 2
True
>>> a == b == c != 1
False
>>>