당신은 편리한 reduce
함수를 파이썬으로 알고 있습니다. 반환파이썬에서 reducelist : reduce와 같이 중간 결과 목록을 제공합니다.
reduce(lambda x,y: x+y, [1,2,3,4], 0)
(((0 + 1) +2) +3) + : 예를 들어, (내장 sum이없는 척)과 같이 목록을 요약하는 데 사용할 수 있습니다 4 = 10.
이제 중간 합계 목록을 원한다면 어떻게해야합니까? 이 경우 [1,3,6,10]
입니다.
다음은 추한 솔루션입니다. 뭔가 좀 더 파이썬이 있습니까?
def reducelist(f, l, x):
out = [x]
prev = x
for i in l:
prev = f(prev, i)
out.append(prev)
return out
적어도 하스켈에서는 * 스캔 *이라고합니다. 축소는 함수 프로그래밍 세계에서 (특정 종류의) * 배 *라고도합니다. – delnan
감사합니다. delnan, 예, Mathematica에서 FoldList로 알고 있습니다. Mathematica는 "List"를 추가하여 표시 한 함수 프로그래밍 함수를 많이 모아 놓은 버전입니다. 나는 아래 답변에서 파이썬 3에서 reducelist라고 부르는 것을 accumulate()로 사용할 수 있음을 알 수있다. – dreeves