a.index(float('nan')) fails

Terry Reedy tjreedy at udel.edu
Thu Oct 25 22:04:52 EDT 2012


On 10/25/2012 9:46 PM, mamboknave at gmail.com wrote:
>>>> a = [float('nan'), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>> a
> [nan, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>> a.index(float('nan'))
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> ValueError: list.index(x): x not in list
>
> That means, the function .index() cannot detect nan values.
> It happens on both Python 2.6 and Python 3.1
>
> Is this a bug? Or I am not using .index() correctly?

It is a consequence of the following, which some people (but not all) 
believe is mandated by the IEEE standard.

 >>> nan = float('nan')
 >>> nan is nan
True
 >>> nan == nan
False

 >>> nanlist = [nan]
 >>> nan in nanlist
True
 >>> nanlist.index(nan)
0

Containment of nan in collection is tested by is, not ==.

 >>> nan2 = float('nan')
 >>> nan2 is nan
False
 >>> nan2 == nan
False
 >>> nan2 in nanlist
False

-- 
Terry Jan Reedy




More information about the Python-list mailing list