Conoces la práctica función reduce
en Python. Por ejemplo, se podría utilizar para resumir una lista como tal (fingir que no es la incorporada en sum):reducelist en Python: como reducir pero dando la lista de resultados intermedios
reduce(lambda x,y: x+y, [1,2,3,4], 0)
que devuelve (((0 + 1) 2) 3) + 4 = 10.
Ahora, ¿y si quisiera una lista de las sumas intermedias? En este caso, [1,3,6,10]
.
Aquí hay una solución fea. ¿Hay algo más pitónico?
def reducelist(f, l, x):
out = [x]
prev = x
for i in l:
prev = f(prev, i)
out.append(prev)
return out
Para su información, al menos en Haskell esto se conoce como * scan *. Reducir también se conoce como (un tipo específico de) * fold * en el mundo de la programación funcional. – delnan
Gracias, Delnan, sí, sé esto como FoldList de Mathematica. Mathematica tiene una versión acumulada de muchas de estas funciones de programación funcional, que se denotan al agregar "Lista". Veo en la respuesta a continuación que en Python 3 lo que llamo reducelist ahora está disponible como accumulate(). – dreeves