lists의 대소 비교에 대해

개발공부를해보자·2025년 1월 6일

공부 정리

목록 보기
8/34

파이썬은 list끼리 크기 비교가 가능하다.
같은 인덱스끼리 사전식으로 비교한다.
짧은 list의 마지막 인덱스까지 크기가 같다면, 길이가 짧은 쪽을 작다고 판단한다.
같은 인덱스에 있는 두 값의 type이 다르면 error가 발생한다.
따라서 list의 요소의 type을 하나로 통일시켜야 비교하기 좋다.
흔한 경우는 아니지만 type이 섞인 list라도 같은 인덱스끼리 type이 같으면 비교 가능하다..

아래 내용은 GPT의 도움을 받아 정리한 내용입니다.

# 파이썬의 리스트 대소 비교

# 리스트는 사전식(lexicographical) 비교를 통해 대소를 판단합니다.
# 각 요소를 차례로 비교하며 결정이 나면 비교를 종료합니다.

# 1. 기본 비교 예제
a = [1, 2, 3]
b = [1, 2, 4]
c = [1, 2]
d = [1, 2, 0]

print(a < b)  # True: 세 번째 요소에서 3 < 4
print(a > b)  # False: 세 번째 요소에서 3 < 4
print(c < d)  # True: 세 번째 요소 비교 시 c는 더 짧아서 작다고 간주

# 2. 요소 타입이 같아야 비교 가능
x = [1, 2]
y = [1, "apple"]
try:
    print(x < y)  # TypeError 발생
except TypeError as e:
    print(f"TypeError: {e}")

# 3. 타입이 다른 경우 문자열끼리 비교
# 문자열과 숫자가 혼합된 리스트도 요소별로 비교 가능하다면 에러 없이 작동
x_mixed = [1, "10", 3]
y_mixed = [1, "2", 3]

print(x_mixed > y_mixed)  # False: '10' < '2' 이므로 False
print(x_mixed < y_mixed)  # True: '10' < '2' 이므로 True

# 문자열 사전식 비교 확인
print('10' < '2')  # True: '1' < '2'로 판단
print('10' > '2')  # False

# 숫자로 변환 후 비교
x_mixed_converted = [int(i) if isinstance(i, str) else i for i in x_mixed]
y_mixed_converted = [int(i) if isinstance(i, str) else i for i in y_mixed]

print(x_mixed_converted > y_mixed_converted)  # True: [1, 10, 3] > [1, 2, 3]
print(x_mixed_converted < y_mixed_converted)  # False
profile
개발 공부하는 30대 비전공자 직장인

0개의 댓글