([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
'source' 카테고리의 다른 글
| setTimeout()이 포함된 함수를 테스트합니다. (0) | 2023.08.05 |
|---|---|
| powershell의 $args 배열에 액세스하기 (0) | 2023.08.05 |
| Spring Boot 2.0.x로 마이그레이션할 때 글로벌 CORS 구성이 중단됨 (0) | 2023.07.16 |
| Excel의 다른 워크북을 상대적으로 참조하려면 어떻게 해야 합니까? (0) | 2023.07.16 |
| 데코레이터실행순서 (0) | 2023.07.16 |