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

파이썬으로 리스트 내 각 숫자의 자릿수 합계 구하는 방법

리스트에 저장된 각 숫자의 자릿수 합계를 구해야 할 때, 간단한 반복문과 파이썬의 str 메서드를 활용하면 쉽게 해결할 수 있습니다.

파이썬의 리스트는 서로 다른 자료형의 값을 함께 저장할 수 있는 유연한 자료구조입니다. 즉, 정수, 실수, 문자열 등 어떤 타입의 데이터든 하나의 리스트에 담을 수 있습니다.

여기서 사용되는 str 메서드는 주어진 값을 문자열 자료형으로 변환해 주는 역할을 합니다. 숫자를 문자열로 바꾸면 각 자릿수에 순차적으로 접근할 수 있어, 반복문과 함께 사용하면 자릿수별 합계를 손쉽게 계산할 수 있습니다.

아래에서 실제 동작 예시를 확인해 보겠습니다.

예제 코드

my_list = [11, 23, 41, 62, 89, 0, 10]
print("The list is : ")
print(my_list)
my_result = []
for elem in my_list:
    sum_val = 0
    for digit in str(elem):
        sum_val += int(digit)
    my_result.append(sum_val)
print ("The result after adding the digits is : " )
print(my_result)

실행 결과

The list is :
[11, 23, 41, 62, 89, 0, 10]
The result after adding the digits is :
[2, 5, 5, 8, 17, 0, 1]

코드 설명

  • 먼저 숫자들이 담긴 리스트를 정의하고, 콘솔에 출력하여 확인합니다.
  • 결과를 저장할 빈 리스트(my_result)를 하나 생성합니다.
  • 바깥쪽 반복문으로 원본 리스트를 순회하며, 각 요소를 str() 함수로 문자열로 변환합니다.
  • 변환된 문자열을 안쪽 반복문으로 한 글자씩 순회하면서, 각 자릿수를 다시 int()로 정수형으로 변환해 누적 합계에 더합니다.
  • 각 요소에 대해 계산된 자릿수 합계를 결과 리스트에 추가(append)합니다.
  • 모든 요소에 대해 위 과정을 반복한 뒤, 최종 결과 리스트를 콘솔에 출력합니다.

보너스: 리스트 컴프리헨션으로 더 간결하게

위 코드를 리스트 컴프리헨션(list comprehension)을 사용하면 다음과 같이 한 줄로 표현할 수도 있습니다.

my_list = [11, 23, 41, 62, 89, 0, 10]
my_result = [sum(int(d) for d in str(num)) for num in my_list]
print(my_result)  # [2, 5, 5, 8, 17, 0, 1]

동일한 로직을 훨씬 짧고 가독성 있게 작성할 수 있으므로, 파이썬다운 코드를 선호한다면 이 방식도 활용해 보시기 바랍니다.