source

([1,0]의 1 == 참)이 거짓으로 평가되는 이유는 무엇입니까?

itover 2023. 7. 16. 20:27
반응형

([1,0]의 1 == 참)이 거짓으로 평가되는 이유는 무엇입니까?

가 이 질문에 대한 답을 보고 있을 때, 저는 제 자신의 답을 이해하지 못한다는 것을 발견했습니다.

나는 이것이 어떻게 해석되고 있는지 정말 이해할 수 없습니다.두 번째 예제에서 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

도와주셔서 감사합니다.제가 정말 명백한 것을 놓치고 있는 것 같습니다.


저는 이것이 링크된 중복과 미묘하게 다르다고 생각합니다.

파이썬에서 0 < 0 == 0 식이 False를 반환하는 이유는 무엇입니까?

두 질문 모두 인간이 표현을 이해하는 것과 관련이 있습니다.그 표현을 평가하는 데는 두 가지 방법이 있는 것 같았습니다.물론 둘 다 정확하지는 않았지만, 제 예에서는 마지막 해석이 불가능합니다.

을 살피는 것0 < 0 == 0당신은 각 반이 평가되고 표현으로서 의미가 있다고 상상할 수 있습니다.

>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True

그래서 링크는 왜 이것이 평가되는지에 대한 답입니다.False:

>>> 0 < 0 == 0
False

하지만 제 예를 들면,1 in ([1,0] == True)는 식으로 의미가 없으므로, 두 개의 (분명히 잘못된) 해석이 가능한 대신 다음 중 하나만 가능한 것으로 보입니다.

>>> (1 in [1,0]) == True

Python은 실제로 여기에 비교 연산자 체인을 적용합니다.식은 다음으로 변환됩니다.

(1 in [1, 0]) and ([1, 0] == True)

그것은 명백합니다.False.

이는 다음과 같은 표현에도 발생합니다.

a < b < c

이는 다음과 같습니다.

(a < b) and (b < c)

(평가하지 않고)b두 번).

자세한 내용은 Python 언어 설명서를 참조하십시오.

언급URL : https://stackoverflow.com/questions/9284350/why-does-1-in-1-0-true-evaluate-to-false

반응형