Por que “[] == False” é avaliado como falso quando “se não []” for bem-sucedido?

Eu estou perguntando isso porque eu sei que a maneira pythonic para verificar se uma lista está vazia ou não é o seguinte:

<code>my_list = []
if not my_list:
    print "computer says no"
else:
    # my_list isn't empty
    print "computer says yes"
</code>

vai imprimircomputer says noIsso me leva a identificar[] comFalse valores de verdade; no entanto, se eu tentar comparar [] e False "diretamente", obtenho o seguinte:

<code>>>> my_list == False
False
>>> my_list is False
False
>>> [] == False
False
</code>

etc ...

Oque esta acontecendo aqui? Eu sinto que estou sentindo falta de algo realmente óbvio.

questionAnswers(4)

yourAnswerToTheQuestion