리스트의 요소들을 일의 자릿수를 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때는 하나의 매개변수를 받는 함수를 정의하고, str() 변환과 음수 인덱싱(negative indexing)을 활용하여 일의 자릿수 값을 추출하는 방식으로 해결할 수 있습니다.
예제 코드
다음은 리스트를 일의 자릿수 기준으로 정렬하는 전체 예제입니다.
def unit_sort(element):
return str(element)[-1]
my_list = [716, 134, 343, 24742]
print("The list is :")
print(my_list)
my_list.sort(key=unit_sort)
print("The result is :")
print(my_list)실행 결과
The list is : [716, 134, 343, 24742] The result is : [24742, 343, 134, 716]
코드 설명
unit_sort라는 이름의 함수를 정의합니다. 이 함수는 리스트의 각 요소를 매개변수로 받아, 해당 요소를 문자열로 변환한 뒤 마지막 문자, 즉 일의 자릿수를 반환합니다.정렬 대상이 될 리스트를 정의하고, 콘솔에 출력하여 원본 상태를 확인합니다.
리스트의
sort()메서드를 호출하면서key인자에 앞서 정의한unit_sort함수를 지정합니다. 이렇게 하면 실제 값이 아닌 일의 자릿수를 기준으로 정렬이 수행됩니다.정렬이 완료된 최종 결과가 콘솔에 출력됩니다.
핵심 포인트
str(element)[-1]에서 음수 인덱스 -1은 문자열의 마지막 문자를 가리킵니다. 숫자를 문자열로 변환하면 각 자릿수에 인덱스로 접근할 수 있기 때문에, 복잡한 수학 연산 없이도 손쉽게 일의 자릿수를 얻을 수 있다는 점이 이 방법의 장점입니다.