5 ms·
For the built-in float type in Python, the behaviour is a bit funny: >>> nan=float('nan') >>> a=[nan] >>> nan in a True >>> any(nan==x for
by Pinus 11mo ago
For the built-in float type in Python, the behaviour is a bit funny:
>>> nan=float('nan')
>>> a=[nan]
>>> nan in a
True
>>> any(nan==x for x in a)
False
(Because the `in` operator assumes that identity implies equality...)
- dragonwriter 11mo agoWell no, the in operator is just defined to produce results equivalent equivalent to any(nan is x or nan==x for x in a); it is counterintuitive to the extent people assume that identity implies equality, but the operator doesn't assume that identity implies equality, it is defined as returning True if either is satisfied. [0] Well, more precisely, this is how the operator behaves for most built in collections; other types can define how it behaves for them by implementing a __contains__() method with the desired semantics. [0] https://docs.python.org/3/reference/expressions.html#membership-test-details https://docs.python.org/3/reference/expressions.html#members...