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

Python – 문자 개수 총합을 기준으로 행렬 정렬하는 방법

Python에서 각 행(row)에 포함된 문자 개수의 총합을 기준으로 행렬(2차원 리스트)을 정렬해야 하는 경우가 있습니다. 이럴 때는 별도의 함수를 정의한 뒤, sort() 메서드의 key 인자로 전달하면 간단하게 해결할 수 있습니다.

정렬 기준이 되는 함수는 리스트 컴프리헨션(list comprehension)과 sum(), len() 메서드를 활용하여 각 행의 문자 수 총합을 계산합니다.

아래에서 실제 동작 예시를 살펴보겠습니다.

예제 코드

def total_characters(row):
    return sum([len(element) for element in row])

my_list = [["pyt", "is", "fun"], ["python", "fun"],["py", "4", "good"], ["python"]]

print("The list is :")
print(my_list)

my_list.sort(key=total_characters)

print("The result is :")
print(my_list)

출력 결과

The list is :
[['pyt', 'is', 'fun'], ['python', 'fun'], ['py', '4', 'good'], ['python']]
The result is :
[['python'], ['py', '4', 'good'], ['pyt', 'is', 'fun'], ['python', 'fun']]

코드 설명

  • total_characters라는 이름의 함수를 정의합니다. 이 함수는 행(row)을 매개변수로 받아 해당 행의 문자 개수 총합을 반환합니다.

  • 리스트 컴프리헨션을 사용하여 행 내부의 각 요소를 순회하고, len()으로 각 요소의 길이를 구한 뒤 sum()으로 모두 더합니다.

  • 함수 외부에서 2차원 리스트를 정의하고, 콘솔에 출력하여 원본 상태를 확인합니다.

  • sort() 메서드를 호출하면서 key=total_characters를 전달하여, 각 행의 문자 개수 총합을 기준으로 오름차순 정렬을 수행합니다.

  • 정렬된 결과는 원본 리스트에 그대로 반영되며, 최종 결과가 콘솔에 출력됩니다.

참고 사항

위 예제에서 각 행의 문자 개수 총합은 다음과 같습니다.

  • ['python'] → 6자

  • ['py', '4', 'good'] → 7자

  • ['pyt', 'is', 'fun'] → 8자

  • ['python', 'fun'] → 10자

만약 원본 리스트를 유지한 채 새로운 정렬된 리스트를 얻고 싶다면, sorted(my_list, key=total_characters)를 사용하는 것이 좋습니다. 또한 내림차순으로 정렬하려면 reverse=True 옵션을 추가하면 됩니다.