this questionへの回答を見ていると、自分の答えを理解できませんでした。([1,0] == Trueの1)がFalseに評価されるのはなぜですか?
これはどのように解析されているのか分かりません。なぜ2番目の例はFalseを返しますか?
>>> 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
ありがとうございました。私は本当に明白な何かを見逃しているに違いないと思う。
Why does the expression 0 < 0 == 0 return False in Python?:
私は、これはリンクの重複に微妙に異なっていると思います。
両方の質問は、表現の人間の理解と関係がある。表現を評価するには2つの方法があるように思えた。もちろんどちらも正しいわけではありませんが、私の例では、最後の解釈は不可能です。 0 < 0 == 0
を見ると
あなたが表現としてそれぞれ評価されている半分となって感覚を想像することができます:これはFalse
評価理由
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
ので、リンクの答え:
>>> 0 < 0 == 0
False
しかし、私の例1 in ([1,0] == True)
doesnのと式として意味をなさないので、2つの(間違っていると思われる)2つの解釈の代わりに、1つのみが可能です:
>>> (1 in [1,0]) == True
演算子の優先順位... '=='は 'in'よりも厳密にバインドするので、' [1,0] == True'が最初に評価され、その結果は 'other_result'の' 1 'に送られます。 –
Python 3.2は同じ方法で動作するため、Python-2.7タグを削除しました。 – lvc
@Marc B:2番目の式 –