리스트에 담긴 튜플들의 요소를 자릿수(숫자의 개수)를 기준으로 정렬해야 할 때, 파이썬의 sorted 메서드와 람다(lambda) 함수를 활용하면 간단하게 해결할 수 있습니다.
아래는 실제 구현 예시입니다.
예제
my_list = [(11, 23, 45, 678), (34, 67), (653,), (78, 99, 23, 45), (67, 43)]
print("The list is : ")
print(my_list)
my_result = sorted(my_list, key = lambda tup : sum([len(str(ele)) for ele in tup ]))
print("The sorted tuples are ")
print(my_result)
출력 결과
The list is : [(11, 23, 45, 678), (34, 67), (653,), (78, 99, 23, 45), (67, 43)] The sorted tuples are [(653,), (34, 67), (67, 43), (78, 99, 23, 45), (11, 23, 45, 678)]
코드 설명
여러 개의 튜플을 포함하는 리스트를 정의한 뒤, 콘솔에 출력합니다.
람다 함수가 각 튜플을 순회하면서 요소 하나하나를 문자열로 변환하고,
len()으로 길이 즉 자릿수를 구합니다. 그런 다음 이 값들을 모두 더해 해당 튜플의 총 자릿수를 계산합니다.sorted메서드가 이 총 자릿수를 키(key)로 삼아 튜플들을 오름차순으로 정렬합니다.정렬된 결과는 별도의 변수에 저장됩니다.
최종적으로 정렬된 결과를 콘솔에 출력합니다.
정렬 기준 이해하기
예를 들어 (653,)은 자릿수의 합이 3, (34, 67)과 (67, 43)은 2 + 2로 4, (78, 99, 23, 45)는 8, (11, 23, 45, 678)은 2 + 2 + 2 + 3으로 9가 됩니다. 따라서 총 자릿수가 적은 튜플부터 차례대로 정렬되어 위와 같은 결과가 나옵니다.