2014-04-18 4 views
-2

배열이 [2, 10, 6, 3]이라고 가정 해 보겠습니다. 결과 목록이 [0, 2, 12, 18]이 될 일부 처리를 수행한다고 가정합니다. 그것은 퍼즐이 아닙니다. 저는 목록의 요소를 추가하고 같은 크기의 새 목록에 결과를 넣을 수 있지만 첫 번째 요소는 0으로 설정해야합니다. 파이썬에서 이것을 어떻게 구현할 수 있습니까? 나는 시도했다 :파이썬리스트에서 수학 연산

n = reduce(lambda x, y: x + [y + x[-1]], list1, [0]) 

하지만 결과 목록 인해 마지막 요소의 존재에 원하는 결과하지 않은 [0, 2, 12, 18, 21]이다.

당신은 목록 슬라이스 수

답변

1

: 당신이 NumPy와 사용할 수있는 경우

>>> list1=[2,10,6,3] 
>>> reduce(lambda x, y: x + [y + x[-1]], list1[:-1], [0]) 
[0, 2, 12, 18] 
>>> 
1

numpy.cumsum (누적 합계)를 시도 : 그런 다음 결과 목록 엉망 당신이 원하는 것을 얻을 수

import numpy as np 
np.cumsum([2, 10, 6, 3]) 

:

a = np.cumsum([2, 10, 6, 3]) 
[0] + a[:-1].tolist() 
0

너무 똑똑하지 마십시오. 여기에 간단한 루프가 있습니다 :

out = [] 
cs = 0 
for v in list1: 
    out.append(cs) 
    cs += v