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

Python – 자릿수 합을 기준으로 리스트 항목 정렬하는 방법

리스트에 포함된 숫자 항목들을 각 숫자의 자릿수 합을 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때는 별도의 함수를 정의하고, 리스트 컴프리헨션(list comprehension)과 내장 함수 sum()을 활용해 각 항목의 자릿수 합을 계산한 뒤, 이 값을 정렬 기준(key)으로 사용하면 됩니다.

예제 코드

다음은 자릿수 합을 기준으로 리스트를 정렬하는 예제입니다.

def sort_list_digit(my_list):
   digits = [int(digit) for digit in str(my_list)]
   return sum(digits)

my_list = [124, 20, 106, 35, 44]

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

print("The result is :")
print(sorted(my_list, key=sort_list_digit))

실행 결과

The list is :
[124, 20, 106, 35, 44]
The result is :
[20, 124, 106, 35, 44]

코드 설명

  • sort_list_digit이라는 이름의 함수를 정의합니다. 이 함수는 sorted()key로 사용되며, 정렬 과정에서 리스트의 각 요소가 하나씩 전달됩니다.

  • 함수 내부에서는 리스트 컴프리헨션을 사용해 전달받은 숫자를 문자열로 변환한 후, 각 자릿수 문자를 다시 정수(int)로 변환하며 반복 처리합니다.

  • 변환된 자릿수들을 sum() 함수로 모두 더한 값을 반환합니다. 예를 들어 124는 1 + 2 + 4 = 7이 반환됩니다.

  • 함수 외부에서는 정렬 대상이 되는 정수형 리스트 [124, 20, 106, 35, 44]를 정의하고 콘솔에 출력합니다.

  • sorted() 함수를 호출할 때 key 인자에 앞서 정의한 함수를 지정하여, 각 항목의 자릿수 합을 기준으로 오름차순 정렬을 수행합니다.

  • 정렬된 최종 결과인 [20, 124, 106, 35, 44]가 콘솔에 출력됩니다. 자릿수 합이 같은 항목(예: 124와 106)은 원래의 순서가 유지됩니다.

정리

이 방식의 핵심은 sorted() 함수의 key 매개변수입니다. key에 함수를 지정하면 각 요소를 직접 비교하는 대신, 해당 함수의 반환값을 기준으로 정렬하게 됩니다. 이처럼 자릿수 합뿐만 아니라 문자열 길이, 특정 조건값 등 다양한 기준으로 리스트를 정렬할 때 동일한 패턴을 활용할 수 있습니다.