리스트에 저장된 각 숫자의 자릿수 합계를 구해야 할 때, 간단한 반복문과 파이썬의 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]
동일한 로직을 훨씬 짧고 가독성 있게 작성할 수 있으므로, 파이썬다운 코드를 선호한다면 이 방식도 활용해 보시기 바랍니다.