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

Python – 행의 최대 요소를 기준으로 행렬 정렬하는 방법

행렬을 각 행의 최댓값을 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때는 하나의 매개변수를 받는 함수를 정의하고, 내장 함수 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)