Qual é o equivalente 'pythonic' da função 'fold' da programação funcional?
Qual é a maneira mais idiomática de alcançar algo como o seguinte, em Haskell:
<code>foldl (+) 0 [1,2,3,4,5] --> 15 </code>
Ou o equivalente em Ruby:
<code>[1,2,3,4,5].inject(0) {|m,x| m + x} #> 15 </code>
Obviamente, o Python fornece oreduce
função, que é uma implementação de dobra, exatamente como acima, no entanto, foi-me dito que a maneira 'pythonic' de programação era evitarlambda
termos e funções de ordem superior, preferindo a compreensão de listas sempre que possível. Portanto, existe uma maneira preferida de dobrar uma lista ou uma estrutura semelhante à lista no Python que não é areduce
função, ou éreduce
o modo idiomático de conseguir isso?