목록이 숫자보다 큼을 발견했습니다.숫자보다 큰 파이썬 목록
>>> [1,2,3] > 1000
True
왜 작동합니까? int([1,2,3])
으로 목록을 int로 변환 할 수 없습니다. int는 list(1000)
인 목록으로 변환 할 수 없습니다. 그렇다면 파이썬은 어떻게이 둘을 비교합니까?
목록이 숫자보다 큼을 발견했습니다.숫자보다 큰 파이썬 목록
>>> [1,2,3] > 1000
True
왜 작동합니까? int([1,2,3])
으로 목록을 int로 변환 할 수 없습니다. int는 list(1000)
인 목록으로 변환 할 수 없습니다. 그렇다면 파이썬은 어떻게이 둘을 비교합니까?
이 "일치하지 않는"유형의 경우, 유형은 유형 이름별로 사전 식으로 나열됩니다. "목록"은 알파벳 순으로 "int"뒤에 오므로 더 큽니다.
CPython 구현 세부 사항 : 을 제외한 다른 유형의 객체는 유형 이름으로 정렬됩니다. 적절한 비교를 지원하지 않는 동일한 유형의 객체 인 은 해당 주소로 정렬됩니다. (source)
주문에 대한 언어 사양은 없습니다 (일관성을 제외하고는). CPython은 유형 이름별로 사전 순으로 정렬되는 언어에 대한 세부 정보가있는 가장 일반적인 구현입니다. Python Reference Manual에 따르면
, 그들은 같은 객체 않는 불평등 비교 내장 타입의
대부분의 다른 개체; 하나의 객체가 다른 객체보다 작거나 큰지를 선택하는 것은 프로그램의 한 실행 내에서 임의로하지만 일관되게 이루어진다.
이 코드는 Python 3에서 작동합니까? –
@Mike, no. TypeError가 발생했습니다 –
** 발견 : ** [PEP 3100] (http://www.python.org/dev/peps/pep-3100/)에 묻혔습니다 : "'=='와'! = '이질적인 타입들 사이에 예외가 발생하면 " –