Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python) – 정렬된 튜플 추출 방법 완벽 가이드

개요

파이썬에서 정렬된(ordered) 튜플, 즉 요소들이 오름차순으로 배치되어 있는 튜플만 골라내야 하는 경우가 있습니다. 이럴 때는 리스트 컴프리헨션(list comprehension)과 함께 sorted() 함수, tuple() 함수, 그리고 == 비교 연산자를 사용하면 아주 간단하게 해결할 수 있습니다.

핵심 아이디어

어떤 튜플을 정렬했을 때 그 결과가 원본과 완전히 동일하다면, 해당 튜플은 이미 정렬되어 있다는 의미입니다. 이 성질을 이용하면 조건에 맞는 튜플만 손쉽게 필터링할 수 있습니다.

예제 코드

아래는 정렬된 튜플을 추출하는 과정을 보여주는 예제입니다.

my_list = [(15, 74, 36, 22, 54), (13, 24, 56), (59, 60, 34), (42, 65, 56), (99, 91)]

print("원본 리스트 :")
print(my_list)

my_result = [element for element in my_list if tuple(sorted(element)) == element]

print("결과 리스트 :")
print(my_result)

실행 결과

원본 리스트 :
[(15, 74, 36, 22, 54), (13, 24, 56), (59, 60, 34), (42, 65, 56), (99, 91)]
결과 리스트 :
[(13, 24, 56)]

코드 설명

  • 정수로 구성된 여러 개의 튜플을 담은 리스트를 정의하고, 콘솔에 출력합니다.

  • 리스트 컴프리헨션을 사용해 리스트를 순회하면서, 각 요소를 sorted()로 정렬한 뒤 tuple()로 다시 튜플 형태로 변환하고, 원래 요소와 비교합니다.

  • 두 값이 같다면(==) 해당 튜플은 이미 오름차순으로 정렬되어 있는 것이므로, 결과 리스트에 포함됩니다.

  • 조건을 만족하는 튜플들만 모아 최종 결과를 변수에 저장하고 콘솔에 출력합니다.

추가 팁

위 예제에서는 첫 번째 튜플인 (13, 24, 56)만 오름차순으로 정렬되어 있기 때문에 결과로 반환됩니다. 내림차순 기준으로 확인하고 싶다면 비교 조건을 tuple(sorted(element, reverse=True)) == element처럼 변경하면 됩니다. 또한 데이터 양이 매우 큰 경우에는 제너레이터 표현식을 활용하면 메모리를 절약할 수 있습니다.