Каков наиболее идиоматический способ добиться чего-то вроде следующего в 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
идиоматический способ достижения этого?