Rich Comparisons Gotcha
Robert Kern
robert.kern at gmail.com
Sun Dec 7 16:32:53 EST 2008
Rasmus Fogh wrote:
> Current behaviour is both inconsistent and counterintuitive, as these
> examples show.
>
>>>> x = float('NaN')
>>>> x == x
> False
Blame IEEE for that one. Rich comparisons have nothing to do with that one.
>>>> ll = [x]
>>>> x in ll
> True
>>>> x == ll[0]
> False
>
>>>> import numpy
>>>> y = numpy.zeros((3,))
>>>> y
> array([ 0., 0., 0.])
>>>> bool(y==y)
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> ValueError: The truth value of an array with more than one element is
> ambiguous. Use a.any() or a.all()
>>>> ll1 = [y,1]
>>>> y in ll1
> True
>>>> ll2 = [1,y]
>>>> y in ll2
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> ValueError: The truth value of an array with more than one element is
> ambiguous. Use a.any() or a.all()
>
> Can anybody see a way this could be fixed (please)? I may well have to
> live with it, but I would really prefer not to.
Make a concrete proposal for fixing it that does not break backwards compatibility.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list