Python에서 행렬(2차원 리스트)을 각 행의 합을 기준으로 정렬해야 하는 경우가 있습니다. 이때 내장 함수인 sum()을 활용하는 별도의 함수를 정의하고, sort() 메서드의 key 매개변수에 지정하면 손쉽게 해결할 수 있습니다.
예제
def sort_sum(row):
return sum(row)
my_list = [[34, 51], [32, 15, 67], [12, 41], [54, 36, 22]]
print("The list is :")
print(my_list)
my_list.sort(key = sort_sum)
print("The result is :")
print(my_list)출력 결과
The list is : [[34, 51], [32, 15, 67], [12, 41], [54, 36, 22]] The result is : [[12, 41], [34, 51], [54, 36, 22], [32, 15, 67]]
코드 설명
sort_sum이라는 이름의 함수를 정의합니다. 이 함수는 리스트를 매개변수로 받아 해당 리스트 내 모든 요소의 합을 반환합니다.리스트 안에 여러 개의 리스트가 포함된 중첩 리스트(2차원 리스트)를 정의한 뒤, 콘솔에 출력합니다.
sort()메서드를 호출하여 리스트를 정렬하며,key매개변수에 앞서 정의한sort_sum함수를 지정합니다. 이렇게 하면 각 행의 합을 기준으로 오름차순 정렬이 수행됩니다.정렬이 완료된 최종 결과가 콘솔에 출력됩니다.
람다 표현식으로 더 간결하게 작성하기
별도의 함수를 정의하지 않고 람다(lambda) 표현식을 사용하면 동일한 작업을 한 줄로 처리할 수 있습니다.
my_list = [[34, 51], [32, 15, 67], [12, 41], [54, 36, 22]] my_list.sort(key=lambda row: sum(row)) print(my_list)
두 방법 모두 결과는 동일하며, 간단한 정렬 조건이라면 람다 표현식을 사용하는 것이 코드를 더 깔끔하게 유지하는 데 도움이 됩니다.