Je croyais que l' in
opérateur en Python vérifie la présence de l'élément dans un ensemble à l'aide de l'égalité vérification de l' ==
, alors element in some_list
est à peu près équivalent à any(x == element for x in some_list)
. Par exemple:
True in [1, 2, 3]
# True because True == 1
ou
1 in [1., 2., 3.]
# also True because 1 == 1.
Cependant, il est bien connu que l' NaN
n'est pas égal à lui-même. J'ai donc attendu qu' float("NaN") in [float("NaN")]
est False
. Et il est False
en effet.
Cependant, si nous utilisons numpy.nan
au lieu de float("NaN")
, la situation est très différente:
import numpy as np
np.nan in [np.nan, 1, 2]
# True
Mais np.nan == np.nan
donne encore False
!
Comment est-il possible? Quelle est la différence entre np.nan
et float("NaN")
? Comment est - in
traitent np.nan
?