【发布时间】: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 操作数的相等性和身份时,例如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 永远不等于任何东西 else,并且
我们使用== 进行相等比较。
另一方面,用于表示NaN 的对象 与其自身相同,因为is 用于进行身份 比较。
【讨论】:
None 代替np.nan 尝试了类似的实验。原来a = None; b = a; print (a == b) 打印出True。
a = [1,2,3] c = [1,2,3] a ==c 返回 True 而 a is c 返回 False