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

파이썬으로 리스트의 누적 합계 구하기 – 초보자를 위한 단계별 가이드

이 글에서는 리스트가 주어졌을 때 각 요소까지의 누적 합계(cumulative sum)를 계산하여 새로운 리스트를 만드는 파이썬 프로그램 작성 방법을 알아보겠습니다.

문제 정의

문제: 숫자로 이루어진 리스트가 주어지면, 앞선 모든 요소의 합을 순차적으로 누적한 값을 담은 새로운 리스트를 생성해야 합니다.

예를 들어 [10, 20, 30, 40, 50]이라는 리스트가 있다면, 결과는 [10, 30, 60, 100, 150]이 됩니다. 각 위치의 값은 원본 리스트의 해당 요소까지의 합계입니다.

구현 예제

# 누적 합계 함수
def Cumulative(l):
    new = []
    cumsum = 0
    for element in l:
        cumsum += element
        new.append(cumsum)
    return new

# 드라이버 코드
lists = [10, 20, 30, 40, 50]
print("New list:", Cumulative(lists))

실행 결과

New list: [10, 30, 60, 100, 150]

코드 동작 원리

위 코드의 동작 과정을 단계별로 살펴보겠습니다.

1. 변수 초기화

결과를 저장할 빈 리스트 new와 누적값을 담을 변수 cumsum을 0으로 초기화합니다.

2. 반복문 실행

리스트의 각 요소를 순회하면서 현재 요소를 cumsum에 더하고, 그 값을 new 리스트에 추가합니다.

3. 결과 반환

모든 요소의 처리가 끝나면 누적 합계가 저장된 새로운 리스트를 반환합니다.

모든 변수는 지역 범위(local scope) 내에서 선언되며, 함수 호출 시 해당 참조 값들이 메모리에서 어떻게 관리되는지 위 그림에서 확인할 수 있습니다.

대안: itertools 활용하기

파이썬 표준 라이브러리인 itertoolsaccumulate 함수를 사용하면 더 간결하게 누적 합계를 구할 수 있습니다.

from itertools import accumulate

lists = [10, 20, 30, 40, 50]
print("New list:", list(accumulate(lists)))

실행 결과는 동일하게 [10, 30, 60, 100, 150]이 출력됩니다. 실무에서는 이 방법이 더 파이써닉(Pythonic)하다고 평가받습니다.

결론

이 글에서는 반복문과 누적 변수를 활용해 리스트의 누적 합계를 구하는 파이썬 프로그램을 작성하는 방법을 배웠습니다. 또한 itertools.accumulate를 사용한 더 간결한 대안도 함께 살펴보았습니다. 두 방법 모두 시간 복잡도는 O(n)으로 효율적이므로, 상황에 맞게 선택하여 사용하시기 바랍니다.