0 == False but [] != False?
Erik Max Francis
max at alcyone.com
Thu May 24 01:14:13 EDT 2007
Rajarshi wrote:
> This is a slightly naive question, but I know that 0 can be used to
> represent False. So
>
>>>> 0 == False
> True
>
> But, I know I can use [] to represent False as in
>
>>>> if not []: print 'empty'
> ...
> empty
>
> But then doing the following gives a surprising (to me!) result
>
>>>> [] == False
> False
>
> Could anybody point out why this is the case?
Because "representing False" (i.e., being false) and "being the same as
False" are not the same thing.
if x:
...
is not the same thing as
if x == True:
...
it's the same as
if bool(x):
...
So a more meaningful comparison of your two tests are:
>>> bool(0) == bool(False)
True
>>> bool([]) == bool(False)
True
--
Erik Max Francis && max at alcyone.com && http://www.alcyone.com/max/
San Jose, CA, USA && 37 20 N 121 53 W && AIM, Y!M erikmaxfrancis
Woman was God's _second_ mistake.
-- Friedrich Nietzsche
More information about the Python-list
mailing list