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

Python에서 튜플의 총 자릿수를 기준으로 정렬하는 방법


리스트에 담긴 튜플들의 요소를 자릿수(숫자의 개수)를 기준으로 정렬해야 할 때, 파이썬의 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가 됩니다. 따라서 총 자릿수가 적은 튜플부터 차례대로 정렬되어 위와 같은 결과가 나옵니다.