On Thu, 25 Oct 2012 22:04:52 -0400, Terry Reedy wrote:
> Containment of nan in collection is tested by is, not ==.
AFAICT, it isn't specific to NaN. The test used by .index() and "in"
appears to be equivalent to:
def equal(a, b):
return a is b or a == b
IOW, it always checks for object identity before equality.
Replacing NaN with an instance of a user-defined class with a
non-reflexive __eq__() method supports this:
> class Foo(object):
= def __eq__(self, other):
= return False
=
> a = Foo()
> b = Foo()
> a in [1,2,a,3,4]
True
> b in [1,2,a,3,4]
False
> [1,2,a,3,4].index(a)
2
> [1,2,a,3,4].index(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: <__main__.Foo object at 0x7fa7055b0550> is not in list
--
http://mail.python.org/mailman/listinfo/python-list