행렬을 각 행의 최댓값을 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때는 하나의 매개변수를 받는 함수를 정의하고, 내장 함수 max()를 활용하여 기준값을 반환하면 됩니다.
예제 코드
아래 예제를 통해 실제 동작 방식을 확인할 수 있습니다.
def sort_max(row):
return max(row)
my_list = [[15, 27, 18], [39, 20, 13], [13, 15, 56], [43, 13, 25]]
print("The list is :")
print(my_list)
my_list.sort(key=sort_max, reverse=True)
print("The result is :")
print(my_list)실행 결과
The list is : [[15, 27, 18], [39, 20, 13], [13, 15, 56], [43, 13, 25]] The result is : [[13, 15, 56], [43, 13, 25], [39, 20, 13], [15, 27, 18]]
코드 설명
sort_max라는 이름의 함수를 정의합니다. 이 함수는 행(row)을 매개변수로 받아 해당 행에서 가장 큰 요소를 반환합니다.함수 외부에서 리스트를 정의한 뒤 콘솔에 출력하여 원본 데이터를 확인합니다.
리스트의
sort()메서드를 호출하며,key인자에 앞서 정의한sort_max함수를 지정합니다. 이렇게 하면 각 행의 최댓값을 기준으로 정렬이 수행됩니다.또한
sort()메서드의reverse매개변수를True로 설정하여 내림차순(역순) 정렬이 되도록 합니다.정렬된 결과가 콘솔에 출력됩니다.
참고 사항
위 예제에서 각 행의 최댓값은 순서대로 27, 39, 56, 43입니다. 이 값을 기준으로 내림차순 정렬하면 56 → 43 → 39 → 27 순서가 되며, 결과적으로 [[13, 15, 56], [43, 13, 25], [39, 20, 13], [15, 27, 18]]이 출력됩니다.
람다(lambda) 표현식을 사용하면 별도의 함수를 정의하지 않고도 더 간결하게 작성할 수 있습니다.
my_list.sort(key=lambda row: max(row), reverse=True)