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?

questionAnswers(7)

yourAnswerToTheQuestion