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