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

행의 합을 기준으로 행렬을 정렬하는 Python 프로그램

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)

두 방법 모두 결과는 동일하며, 간단한 정렬 조건이라면 람다 표현식을 사용하는 것이 코드를 더 깔끔하게 유지하는 데 도움이 됩니다.