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

Python에서 튜플의 최대 요소를 기준으로 정렬하는 방법

튜플 리스트를 각 튜플이 가진 최대 요소를 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때는 파이썬 내장 함수인 max()를 사용해 가장 큰 값을 반환하는 함수를 먼저 정의하고, 이를 sort() 메서드의 key 인자로 전달하면 됩니다.

reverse=True 옵션을 함께 사용하면 최대값이 큰 튜플부터 내림차순으로 정렬할 수 있습니다.

예제 코드

def get_max_value(my_val):
   return max(my_val)

my_list = [(4, 6, 8, 1), (13, 21, 42, 56), (7, 1, 9, 0), (1, 2)]

print("The list is : ")
print(my_list)
my_list.sort(key=get_max_value, reverse=True)

print("The sorted tuples are : ")
print(my_list)

실행 결과

The list is :
[(4, 6, 8, 1), (13, 21, 42, 56), (7, 1, 9, 0), (1, 2)]
The sorted tuples are :
[(13, 21, 42, 56), (7, 1, 9, 0), (4, 6, 8, 1), (1, 2)]

코드 설명

  • get_max_value라는 이름의 함수를 정의합니다. 이 함수는 max() 함수를 호출하여 전달받은 튜플에서 가장 큰 값을 반환합니다.

  • 정수형 튜플 네 개로 구성된 리스트 my_list를 생성하고, 원본 리스트를 콘솔에 출력합니다.

  • sort() 메서드에 key=get_max_value를 지정하여, 각 튜플의 최대값을 비교 기준으로 삼아 리스트를 정렬합니다.

  • reverse=True 옵션 때문에 결과는 내림차순(큰 값 → 작은 값)으로 표시됩니다.

  • 정렬된 리스트가 최종적으로 콘솔에 출력됩니다.

람다(lambda) 함수로 더 간결하게 작성하기

별도의 함수를 정의하지 않고 람다 표현식을 사용하면 코드를 한 줄로 줄일 수 있습니다.

my_list.sort(key=lambda x: max(x), reverse=True)

두 방법 모두 동일한 결과를 반환하며, 상황에 따라 가독성이 좋은 방식을 선택하면 됩니다. 참고로 sort()는 원본 리스트 자체를 변경하는 in-place 정렬이며, 원본을 유지하고 싶다면 sorted(my_list, key=max, reverse=True)처럼 sorted() 함수를 사용하는 것이 좋습니다.