Что является наиболее идиоматическим способом добиться чего-то вроде следующего, в Haskell:Что такое «pythonic», эквивалентный функции «fold» от функционального программирования?
foldl (+) 0 [1,2,3,4,5]
--> 15
или его эквивалент в Ruby:
[1,2,3,4,5].inject(0) {|m,x| m + x}
#> 15
Очевидно, что Python предоставляет функцию reduce
, которая является реализацией однако, мне сказали, что «питонический» способ программирования состоит в том, чтобы избежать использования терминами и функциями более высокого порядка, предпочитая, если это возможно, понимание списков. Следовательно, существует ли предпочтительный способ сгибания списка или структуры списка в Python, которая не является функцией reduce
, или reduce
- идиоматический способ достижения этого?
'sum' не достаточно хорошо? – JBernardo
не уверен, что это хороший пример для вашего вопроса. Его можно легко достичь с помощью 'sum', вы можете предложить несколько разных типов примеров. – jamylak
Эй, Дж. Бернардо. Суммирование списка чисел означало как довольно вырожденный пример, меня больше интересует общая идея накопления элементов списка с использованием некоторой двоичной операции и начальное значение, а не суммирование целых чисел. – mistertim