Por que (1 em [1,0] == Verdadeiro) é avaliado como Falso? [duplicado
Esta pergunta já tem uma resposta aqui:
Por que a expressão 0 <0 == 0 retorna False em Python? 9 respostasQuando eu estava procurando respostas paraessa questã, Descobri que não entendi minha própria respost
Eu realmente não entendo como isso está sendo analisado. Por que o segundo exemplo retorna Falso?
>>> 1 in [1,0] # This is expected
True
>>> 1 in [1,0] == True # This is strange
False
>>> (1 in [1,0]) == True # This is what I wanted it to be
True
>>> 1 in ([1,0] == True) # But it's not just a precedence issue!
# It did not raise an exception on the second example.
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
1 in ([1,0] == True)
TypeError: argument of type 'bool' is not iterable
Obrigado por qualquer ajuda. Acho que estou perdendo algo realmente óbvi
Acho que isso é sutilmente diferente do duplicado vinculado:
Por que a expressão 0 <0 == 0 retorna False em Python?.
Ambas as questões têm a ver com a compreensão humana da expressão. Parecia haver duas maneiras (na minha opinião) de avaliar a expressão. É claro que nenhum dos dois estava correto, mas no meu exemplo, a última interpretação é impossíve
Olhando para0 < 0 == 0
você pode imaginar cada metade sendo avaliada e fazendo sentido como uma expressão:
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
Então, o link responde por que isso avaliaFalse
:
>>> 0 < 0 == 0
False
Mas com o meu exemplo1 in ([1,0] == True)
não faz sentido como expressão; portanto, em vez de haver duas interpretações possíveis (reconhecidamente erradas), apenas uma parece possível:
>>> (1 in [1,0]) == True