【问题标题】:python np.nan and '==' & 'is' [duplicate]python np.nan 和 '==' & 'is' [重复]
【发布时间】:2019-07-30 13:33:28
【问题描述】:

当我检查 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

?

【问题讨论】:

    标签: python identity equality


    【解决方案1】:

    因为NaN 永远不等于任何东西 else,并且 我们使用== 进行相等比较。

    另一方面,用于表示NaN对象 与其自身相同,因为is 用于进行身份 比较。

    【讨论】:

    • 有趣。 (+1) 我用None 代替np.nan 尝试了类似的实验。原来a = None; b = a; print (a == b) 打印出True
    • 你能解释一下相等和同一比较之间的区别吗?
    • @Psychotechnopath 平等:两个具有相同的对象,不一定是相同的对象。身份:完全相同的对象。
    • 所以基本上 NaN == NaN 返回 False,因为它从不等于其他任何东西,但是所有 np.nan 的 do 都指向同一个对象,因此 np.nan 是 np.nan 返回 True?这与普通对象中的方式完全相反(例如,a = [1,2,3] c = [1,2,3] a ==c 返回 Truea is c 返回 False
    • 你自己说的
    猜你喜欢
    • 2020-12-11
    • 2016-11-26
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多