Weird expression result

cokofreedom at gmail.com cokofreedom at gmail.com
Mon Aug 18 18:18:14 CEST 2008


On Aug 18, 5:57 pm, George Sakkis <george.sak... at gmail.com> wrote:
> I'm probably missing something obvious but I can't put my finger on
> it:
>
> >>> (3 in [3]) == True
>
> True
>
> >>> 3 in ([3] == True)
>
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: argument of type 'bool' is not iterable
>
> >>> 3 in [3] == True
>
> False
>
> How/why does the last one evaluate to False ?
>
> George

> >>> (3 in [3]) == True

The list holds an integer value of 3, you check if 3 is in that list,
that is true, you then check it your answer is true...

> >>> 3 in ([3] == True)

True and False are keywords now and do not correspond the way you
think. [3] == True or [3] == False will both answer False.

Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = list()
>>> a.append(3)
>>> 3 in a
True
>>> if a:
...     print "yay"
...
yay
>>> if a == True:
...     print "yay"
... else:
...     print "nay"
...
nay

> >>> 3 in [3] == True

http://docs.python.org/ref[3/summary.html

>>> 3 in [3] == True
False
>>> 3 in [3] == False
False

However I come a bit stuck myself, since this should just tell you
that you cannot do a membership test on 3 being in a bool...but it
doesn't...It should be doing the [3] == True, returning false then
trying to see if 3 is in false...



More information about the Python-list mailing list