> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 `1 in [1,0] == True`가 False로 평가되는 이유는 무엇입니까?

Python에서 `1 in [1,0] == True`가 False로 평가되는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-31 21:14:02
원래의
999명이 탐색했습니다.

Why Does `1 in [1,0] == True` Evaluate to False in Python?

비교 연산자 체인: [1,0] 중 1 == True가 False로 평가되는 이유

Python에서는 놀라운 결과가 나올 수 있습니다. "in" 멤버십 테스트 결과를 True로 비교할 때 발생합니다.

<code class="python">1 in [1,0] == True  # Unexpectedly returns False</code>
로그인 후 복사

이 동작을 이해하려면 Python이 비교 연산자 연결을 사용한다는 점을 인식하는 것이 중요합니다. 이는 표현식의 여러 비교 연산자가 순차적으로 평가됨을 의미합니다. 앞서 언급한 코드의 경우 표현식은 다음과 같이 해석됩니다.

<code class="python">(1 in [1,0]) == True</code>
로그인 후 복사

더 자세히 분석하면:

  1. [1,0]의 1은 True(1로 평가)로 평가됩니다. 목록 [1,0])의 멤버입니다.
  2. [1,0] == True가 다음으로 평가됩니다. 직관과는 달리 이 표현식은 False를 반환합니다.

[1,0] == True의 비밀

이 예상치 못한 결과의 이유는 다음과 같습니다. Python이 부울 값과 비교를 처리하는 방식. 목록을 부울 값과 비교할 때 Python은 먼저 목록을 부울 값으로 변환하려고 시도합니다. [1,0]의 경우 Python에서는 비어 있지 않은 목록이 True로 간주되므로 이 변환은 False를 반환합니다.

The Chain Unfolds

따라서 원래 표현식은 다음과 같이 단순화됩니다.

<code class="python">True == False</code>
로그인 후 복사

분명히 False로 평가됩니다. 이는 1 in [1,0] == True가 False를 반환하는 이유를 설명합니다.

추가 의미

이 연산자 연결 동작은 다른 비교 연산자에도 적용됩니다. 예:

<code class="python">a < b < c</code>
로그인 후 복사

다음으로 변환:

<code class="python">(a < b) and (b < c)</code>
로그인 후 복사

이것은 b가 한 번만 평가되도록 보장합니다.

결론

그러한 표현식의 동작을 해석하려면 비교 연산자 연결의 개념을 이해하는 것이 중요합니다. 평가 순서가 왼쪽에서 오른쪽임을 인식함으로써 결과를 정확하게 예측하고 혼란을 피할 수 있습니다.

위 내용은 Python에서 `1 in [1,0] == True`가 False로 평가되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿