Python에서 두 리스트 비교하기
Python에서는 cmp() 메서드를 사용하여 두 리스트의 요소를 비교할 수 있습니다. 이 메서드는 다음과 같은 규칙에 따라 동작합니다.
- 두 요소의 타입이 같으면 해당 타입의 기준에 따라 비교를 수행하고 그 결과를 반환합니다.
- 두 요소의 타입이 다르면 먼저 두 요소가 숫자인지 확인합니다. 둘 다 숫자라면 필요한 경우 타입을 강제로 변환(type coercion)한 후 비교합니다.
- 한쪽 요소만 숫자라면, 숫자가 "가장 작은" 값으로 간주되므로 나머지 요소가 "더 큰" 것으로 판정됩니다.
- 위 경우에 해당하지 않으면 타입 이름을 알파벳순으로 정렬하여 비교합니다.
또한, 한쪽 리스트의 끝에 도달하면 더 긴 리스트가 "더 큰" 것으로 판단됩니다. 두 리스트를 모두 순회했는데도 내용이 완전히 같다면 무승부로 처리되어 0이 반환됩니다.
예제 코드
list1 = [123, 'xyz']
list2 = [456, 'abc']
print(cmp(list1, list2))
print(cmp(list2, list1))
list2 = [123, 'xyz']
print(cmp(list1, list2))
실행 결과
위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.
-1
1
0
첫 번째 비교에서는 list1이 list2보다 작아 -1, 두 번째 비교에서는 list2가 list1보다 커서 1, 마지막에는 두 리스트가 동일하여 0이 반환됩니다.
참고: Python 3에서의 대안
cmp() 함수는 Python 2에서만 제공되며, Python 3부터는 표준 라이브러리에서 제거되었습니다. Python 3 환경에서는 비교 연산자(==, <, >)를 직접 사용하거나, 정렬 시 사용자 지정 비교 로직이 필요한 경우 functools.cmp_to_key()를 활용하는 것이 좋습니다.