[Tutor] True and 1 [was Re: use of the newer dict types]

Steven D'Aprano steve at pearwood.info
Sat Jul 27 20:36:42 CEST 2013


On 28/07/13 04:03, Jim Mooney wrote:

> I did this a while back and it took me some time to figure why I got
> opposite results:
>
> if [True]: print(True)
> else: print(False)
> # result: True

[True] is a non-empty list, and as a non-empty list, it is a truthy (true-like) value. You could have written [42], or ["hello world"], or even [False] or [0]. What matters is that the list is non-empty and therefore truthy.

> if [True] == True: print(True)
> else: print(False)
> # result: False

Obviously a list of one item is not equal to True, no matter what that item happens to be.

Likewise [101] != 101, ["spam"] != "spam", and [[]] != []. A list containing an empty list is not equal to an empty list.

However, this will test your knowledge:

L = []
L.append(L)
[L] == L

True or false? Can you explain why?



-- 
Steven


More information about the Tutor mailing list