Что такое & #39;pythonic& #39; эквивалентно & #39;fold& #39; функции из функционального программирования?

Каков наиболее идиоматический способ добиться чего-то вроде следующего в Haskell:

foldl (+) 0 [1,2,3,4,5]
--> 15

Или его эквивалента в Ruby:

[1,2,3,4,5].inject(0) {|m,x| m + x}
#> 15

Очевидно, Python предоставляет функцию reduce, которая является реализации fold точно так же, как описано выше, однако мне сказали, что «питоновский» способ программирования заключается в том, чтобы избегать lambdaтерминов и функций более высокого -порядка, предпочитая, где это возможно, списковое -включение. Таким образом, существует ли предпочтительный способ сворачивания списка или структуры, подобной списку -, в Python, которая не является функцией reduce, или это reduceидиоматический способ достижения этого?

108
задан jamylak 28 April 2012 в 18:44
поделиться