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

Python 리스트 합계 구하기 – 문자열 형태의 숫자까지 한 번에 더하는 방법

이 튜토리얼에서는 리스트에 담긴 모든 숫자를 더하는 파이썬 프로그램을 작성해 보겠습니다. 실무에서는 리스트 안에 정수형 숫자뿐만 아니라 문자열 형태로 저장된 숫자도 함께 들어 있는 경우가 많습니다. 서로 다른 타입의 숫자를 한 번에 합산하려면 어떻게 해야 할까요? 아래 예시부터 살펴보겠습니다.

입력 예시

random_list = [1, '10', 'tutorialspoint', '2020', 'tutorialspoint@2020', 2020]

위 리스트에서 숫자로 판단할 수 있는 값은 1, '10', '2020', 2020 네 가지입니다. 나머지 'tutorialspoint''tutorialspoint@2020'은 숫자가 아니므로 합계에서 제외됩니다.

출력 예시

4051

프로그램 작성 단계

다음 순서대로 코드를 작성하면 됩니다.

  • 합계를 구할 리스트를 준비(초기화)합니다.
  • 결과를 저장할 변수 total을 0으로 초기화합니다.
  • for 문으로 리스트를 순회하며 각 요소를 하나씩 검사합니다.
  • 요소가 다음 두 조건 중 하나를 만족하면 total에 더합니다.
    • 요소 자체가 int 타입인 경우 → isinstance()로 타입을 확인합니다.
    • 요소가 문자열 형태의 숫자인 경우 → isdigit() 메서드로 확인합니다.
  • 순회가 끝나면 최종 합계 total을 출력합니다.

예제 코드

# 리스트 초기화
random_list = [1, '10', 'tutorialspoint', '2020', 'tutorialspoint@2020', 2020]

# 합계를 저장할 변수 초기화
total = 0

# 리스트 순회
for element in random_list:
    # 숫자인지 여부 확인
    if isinstance(element, int) or element.isdigit():
        # 숫자라면 정수로 변환하여 합산
        total += int(element)

# 결과 출력
print(total)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

4051

코드 설명

isinstance(element, int)는 해당 요소가 정수형인지 확인하고, element.isdigit()는 문자열이 오직 숫자로만 이루어져 있는지 확인합니다. 예를 들어 '2020'은 모든 문자가 숫자이므로 조건을 통과하지만, 'tutorialspoint@2020'은 알파벳과 특수문자가 섞여 있어 isdigit()이 False를 반환해 합계에서 제외됩니다.

한 가지 주의할 점은 isdigit()이 음수 기호(-)나 소수점(.)이 포함된 문자열은 숫자로 인식하지 못한다는 것입니다. 음수나 실수까지 처리해야 하는 상황이라면 try-except 문으로 float() 변환을 시도하는 방식이 더 안전합니다.

마무리

이번 튜토리얼에서는 정수와 문자열 숫자가 섞여 있는 리스트의 합계를 구하는 방법을 배웠습니다. 핵심은 isinstance()isdigit()을 조합해 숫자 여부를 판별한 뒤, 숫자인 경우에만 int()로 변환해 더하는 것입니다. 내용 중 궁금한 점이 있다면 댓글로 남겨주세요.