weird behaviour of "0 in [] is False"

Diez B. Roggisch deetsNOSPAM at web.de
Tue Nov 30 08:18:30 EST 2004


>>>> l = []
>>>> 0 in (l is False)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> TypeError: iterable argument required

that should be clear - 0 in False can't work.

>>>> (0 in l) is False
> True
>>>> 0 in l is False
> False

It seems to stem from a behaviour python exhibits in expressions like this:

3 > 2  > 1

This yields True, while

(3 > 2 ) > 1

yields false. Chaining of operators gets translated like this:

3 > 2 and 2 > 1

Look in section 5.9 of the language reference.

Then your expression gets translated to:

0 in l and l is False

which yields False of course.


-- 
Regards,

Diez B. Roggisch



More information about the Python-list mailing list