Odd truth result with in and ==

Python python at bladeshadow.org
Wed Nov 21 14:31:23 EST 2018


On Wed, Nov 21, 2018 at 01:18:22PM -0600, Python wrote:
> $ python3
> Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
> [GCC 5.4.0 20160609] on linux
> Type "help", "copyright", "credits" or "license" for more information.
> >>> 1 in [1,2,3] == True
> False
> >>> 1 in ([1,2,3] == True)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: argument of type 'bool' is not iterable
> >>> (1 in [1,2,3]) == True
> True
> 
> How is the first not equivalent to either one of the second or third?
> My expectation is it should produce the same result as the second.  It
> *seems* like Python is ignoring the '1 in' part and just giving the
> result for '[1,2,3] == True'...  Is this just a bug?

FWIW I meant my expectation is it should be the same as #3 (I confused
the 2nd item with the second subsequent thing that it did not match)
since "in" and "==" have the same precedence, and should be evaluated
in order left to right.  IOW, it should evaluate to True.




More information about the Python-list mailing list