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

Python으로 각 튜플의 마지막 요소 기준으로 튜플 리스트 오름차순 정렬하기

튜플 리스트에서 각 튜플의 마지막 요소를 기준으로 오름차순 정렬해야 하는 경우가 종종 있습니다. 이럴 때는 별도의 함수를 정의하고, 리스트를 반복하면서 간단한 스왑(swap) 연산을 수행하는 방식으로 정렬을 구현할 수 있습니다.

아래 예제를 통해 자세히 살펴보겠습니다.

예제 코드

def sort_tuple(my_tup):

    my_len = len(my_tup)
    for i in range(0, my_len):

        for j in range(0, my_len-i-1):
            if (my_tup[j][-1] > my_tup[j + 1][-1]):
                temp = my_tup[j]
                my_tup[j] = my_tup[j + 1]
                my_tup[j + 1] = temp
    return my_tup

my_tuple = [(1, 92), (34, 25), (67, 89)]
print("The tuple is :")
print(my_tuple)

print("The sorted list of tuples are : ")
print(sort_tuple(my_tuple))

실행 결과

The tuple is :
[(1, 92), (34, 25), (67, 89)]
The sorted list of tuples are :
[(34, 25), (67, 89), (1, 92)]

코드 설명

  • 'sort_tuple'이라는 이름의 함수를 정의하고, 매개변수로 튜플 리스트를 전달받습니다.

  • 중첩 반복문을 사용해 리스트를 순회하며, 현재 튜플의 마지막 요소(my_tup[j][-1])가 바로 뒤 튜플의 마지막 요소보다 큰지 비교합니다.

  • 조건이 참이면 임시 변수 temp를 이용한 스왑 연산으로 두 튜플의 위치를 교환합니다.

  • 모든 비교가 끝나면 정렬된 튜플 리스트를 반환합니다.

  • 함수 외부에서는 튜플 리스트를 정의한 뒤 콘솔에 출력하고, 이 리스트를 인자로 넘겨 함수를 호출합니다.

  • 정렬된 최종 결과가 콘솔에 출력됩니다.

위 코드는 버블 정렬(bubble sort) 알고리즘을 응용한 것으로, 시간 복잡도는 O(n²)입니다.

더 간결한 방법: sorted()와 key 활용하기

실무에서는 내장 함수 sorted()key 인자를 사용하면 한 줄로 동일한 작업을 수행할 수 있으며, 성능 면에서도 더 유리합니다.

my_tuple = [(1, 92), (34, 25), (67, 89)]

sorted_tuple = sorted(my_tuple, key=lambda x: x[-1])
print(sorted_tuple)
[(34, 25), (67, 89), (1, 92)]

key=lambda x: x[-1]는 각 튜플의 마지막 요소를 정렬 기준으로 삼겠다는 의미입니다. 직접 정렬 로직을 구현하는 학습 목적이 아니라면, 이처럼 파이썬 내장 기능을 활용하는 것이 가독성과 효율성 모두에서 좋은 선택입니다.