Python比较怪异[重复]

Posted

技术标签:

【中文标题】Python比较怪异[重复]【英文标题】:Python comparison weirdness [duplicate] 【发布时间】:2021-11-18 17:47:49 【问题描述】:

我有一个对象,我需要比较它的一些属性,但我无法解释发生了什么,但以下是我的 VS 代码调试器的输出(我在每个输出之前添加了 '=')

(0 > 55000 | 150 > 280)
=False # expected
250>150
=True # expected
True & False 
=False # expected
(250>150 & (0 > 55000 | 150 > 280))
=True # what????

【问题讨论】:

布尔或是or,而不是| and& 相同。 (如果你习惯 NumPy 和 Pandas 使用 |&,那是因为 orand 由于短路问题是不可重载的。) 【参考方案1】:

对于数字,& 是“按位与”,| 是“按位或”。这些运算符的优先级高于>< 等比较运算符。

150 & (0 > 55000 | 150 > 280) == 150 & 0 == 0 那么150>0 就是True

【讨论】:

【参考方案2】:

您正在使用 binary bitwise operators &|。 你应该使用boolean operatorsandor

【讨论】:

【参考方案3】:

|和 & 是位运算符。位运算符比比较运算符具有更高的优先级。你应该改变'|'到“或”和“&”到“和”

【讨论】:

以上是关于Python比较怪异[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C ++比较一个类中的函数怪异行为

字符串比较逻辑Python [重复]

python:点分隔版本比较[重复]

Python\Numpy:将数组与 NAN 进行比较 [重复]

Python - 将长/整数值与==进行比较并且是[重复]

Python中的字符串比较:is vs. == [重复]