python np.nan和'=='&';是';
当我检查Python操作数的相等性和标识时,例如python np.nan和'=='&';是';,python,identity,equality,Python,Identity,Equality,当我检查Python操作数的相等性和标识时,例如a=[];b=a我知道: a == b => True a is b => True 我理解 那么,为什么我用np.nan得到不同的结果呢 a = np.nan; b = a a == b => False a is b => True 因为NaN从来都不等于其他任何东西,而且 我们使用==来执行相等比较 另一方面,用于表示NaN的对象与自身完全相同,因为is用于进行标识比较。有趣。(+1)我用None而不是np.na
a=[];b=a
我知道:
a == b => True
a is b => True
我理解
那么,为什么我用np.nan得到不同的结果呢
a = np.nan; b = a
a == b => False
a is b => True
因为NaN从来都不等于其他任何东西,而且 我们使用
==
来执行相等比较
另一方面,用于表示
NaN
的对象与自身完全相同,因为is
用于进行标识比较。有趣。(+1)我用None
而不是np.nan
做了一个类似的实验。结果是a=None;b=a;print(a==b)
打印True
。你能给我解释一下等式和身份比较之间的区别吗?@Psycechnopath equality:两个具有相同值的对象,不一定是同一个对象。标识:完全相同的对象。因此基本上NaN==NaN返回False,因为它永远不等于任何其他对象,但是所有的np.NaN都指向同一个对象,因此np.NaN是np.NaN返回True吗?这与普通对象中的情况完全相反(例如,a=[1,2,3]
c=[1,2,3]
a==c
返回True
,而a是c
返回False
是您自己说的