要检查产品列表中,Python的测试为对象的身份 第一次 ,然后测试平等只有当对象是不同的。1个
float("NaN") in [float("NaN")]为False,因为 比较中涉及两个 不同的NaN对象。因此,身份测试返回False,然后相等测试也返回False
NaN != NaN。
np.nan in [np.nan, 1, 2]但是为True,因为比较中涉及 相同的
NaN对象。对象身份测试返回True,因此Python立即将其识别为列表中的项目。
适用于Python其他许多内置容器类型(例如元组和集合)的
__contains__方法(使用调用
in)使用相同的检查实现。
1至少在CPython中是这样。这里的对象标识意味着可以在相同的内存地址找到对象:执行list的contains方法,使用
PyObject_RichCompareBool该方法可以在可能进行更复杂的对象比较之前快速比较对象指针。其他Python实现可能有所不同。



