리스트의 각 요소를 해당 숫자 중 가장 큰 자릿수 값을 기준으로 정렬해야 하는 경우, str과 max 메서드를 활용하는 별도의 함수를 정의하면 손쉽게 해결할 수 있습니다.
아래는 그 구현 예시입니다.
예제
def max_digits(element):
return max(str(element))
my_list = [224, 192, 145, 18, 3721]
print("The list is :")
print(my_list)
my_list.sort(key = max_digits)
print("The result is :")
print(my_list)
출력
The list is : [224, 192, 145, 18, 3721] The result is : [224, 145, 3721, 18, 192]
코드 설명
max_digits라는 이름의 함수가 정의됩니다. 이 함수는 요소를 매개변수로 받아 문자열로 변환한 뒤, 그중 최댓값을 구하여 반환합니다.함수 외부에서는 정렬 대상 리스트가 정의되고, 콘솔에 출력됩니다.
sort메서드를 사용해 리스트를 정렬하며,key인자에 앞서 정의한 함수가 지정됩니다. 이로써 각 요소는 자체 값이 아닌 내부 최대 자릿수를 기준으로 비교됩니다.정렬이 완료된 결과가 콘솔에 출력됩니다.
참고 사항
문자열에 max를 적용하면 문자 코드(ASCII) 값 기준으로 가장 큰 문자가 반환됩니다. 숫자 0~9의 경우 문자 코드 순서와 실제 값 순서가 일치하므로, 위 예제처럼 자릿수 비교에 그대로 활용할 수 있습니다. 또한 sort()는 원본 리스트를 제자리에서 변경하지만, 원본을 유지하고 싶다면 새로운 정렬된 리스트를 반환하는 sorted(my_list, key=max_digits)를 사용하는 것이 좋습니다.