对 seq 的每个元素应用 reduce

Apply reduce for each element of seq

我有列表集合,我想为集合中的每个列表应用 "reduce +"。我想我应该结合 "apply"、"map" 和 "reduce +",但我不明白如何结合。 例子: [[1 2 3] [4 5 3] [2 5 1]] => [6 12 8]

不需要applymapreduce 可以正常工作:

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

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

更新

您实际上也可以在这里使用 apply 代替 reduce(只是不能同时使用):

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

进一步更新

如果您有任何性能问题,请参阅@AlexMiller

对此回答的一些重要提示的评论