对seq的每个元素应用reduce

时间:2017-02-03 13:02:41

标签: clojure reduce

我有列表集合,我想为集合中的每个列表应用“reduce +”。我想我应该结合“应用”,“地图”和“减少+”,但我无法理解。 例:     [[1 2 3] [4 5 3] [2 5 1]] => [6 12 8]

1 个答案:

答案 0 :(得分:4)

无需applymapreduce可以正常使用:

(map (partial reduce +) [[1 2 3] [4 5 3] [2 5 1]])

map会在列表中的每个成员上调用该函数,partial只会创建一个' curry'需要一个参数的reduce版本。它也可以写成#(reduce + %)(fn [lst] (reduce + lst))

<强>更新

你实际上可以在这里使用apply代替reduce(只是不是两者):

(map (partial apply +) [[1 2 3] [4 5 3] [2 5 1]])

进一步更新

如果您有任何性能方面的问题,请参阅@AlexMiller的一些重要提示,以获取有关此答案的评论