코딩테스트/Python 개념

누적합 축적 accumulate()

박소민 2023. 2. 8. 22:21
from itertools import accumulate
from itertools import accumulate

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = list(accumulate(a))
print(a)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(b)  # [1, 3, 6, 10, 15, 21, 28, 36, 45, 55]

 

  • 속도차이

1번 for문

a = [x+1 for x in range(1000000)]
for i in range(1, len(a)):
    a[i] += a[i-1]

2번 accumulate

a = [x+1 for x in range(1000000)]
b = list(accumulate(a))
실행 코드 속도
for문 10만 0.01894974708557129
accumulate 10만 0.004986286163330078
for문 1000만 1.868004560470581
accumulate 1000만 0.766948938369751

-> for문 보다 값이 커질수록 속도면에서 유리