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

Python – 튜플을 총 자릿수 기준으로 정렬하는 방법

튜플을 총 자릿수를 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때는 리스트(튜플)의 모든 요소를 문자열로 변환한 뒤, 각 문자열의 길이를 구하여 합산하는 메서드를 정의하면 됩니다. 이 합산된 값이 곧 정렬 기준이 되며, 메서드의 결과로 반환됩니다.

아래는 실제 동작을 보여주는 예제입니다.

예제

def count_tuple_digits(row):
   return sum([len(str(element)) for element in row])

my_tuple = [(32, 14, 65, 723), (13, 26), (12345,), (137, 234, 314)]

print("The tuple is :")
print(my_tuple)

my_tuple.sort(key = count_tuple_digits)

print("The result is :")
print(my_tuple)

출력

The tuple is :
[(32, 14, 65, 723), (13, 26), (12345,), (137, 234, 314)]
The result is :
[(13, 26), (12345,), (32, 14, 65, 723), (137, 234, 314)]

설명

  • 'count_tuple_digits'라는 이름의 메서드를 정의합니다. 이 메서드는 튜플을 매개변수로 받아, 내부의 모든 요소를 문자열로 변환한 후 각 문자열의 길이를 구하고 이를 모두 더합니다.

  • 이 과정은 'sum' 메서드를 통해 수행되며, 계산된 총 자릿수가 반환값이 됩니다.

  • 여러 개의 튜플로 구성된 리스트를 정의한 뒤 콘솔에 출력합니다.

  • sort 함수의 key 인자에 앞서 정의한 메서드를 지정하여, 각 튜플의 총 자릿수를 기준으로 오름차순 정렬을 수행합니다.

  • 정렬이 완료된 결과가 콘솔에 출력됩니다.

핵심 포인트

Python의 sort() 메서드는 key 인자에 함수를 전달할 수 있어, 단순한 크기 비교가 아닌 사용자가 원하는 임의의 기준으로 정렬할 수 있다는 점이 큰 장점입니다. 위 예제처럼 요소를 문자열로 변환해 자릿수를 세는 방식은 음수 부호나 소수점 등도 함께 계산된다는 점에 유의하세요. 순수하게 숫자의 자릿수만 세고 싶다면 abs()와 math.log10() 등을 조합하는 방법도 고려할 수 있습니다.