如何对嵌套列表中的每个内部子序列分别进行求和运算
实现嵌套子序列分别求和的方案
问题原因
你之前使用apply map +得到的是所有子序列同位元素的和(对应你的示例输入会得到(10 14 18)),直接用reduce也只会对最外层序列做聚合,不符合逐个子序列内部求和的需求。
实现代码
通用思路
遍历外层序列的每一个内部子序列,对每个子序列单独执行求和聚合即可。
常见Lisp方言实现
- 如果你使用Common Lisp/Scheme:
- 输出扁平结果
(6 9 12 15):
(map (lambda (subseq) (reduce #'+ subseq)) '((1 2 3) (2 3 4) (3 4 5) (4 5 6)))- 输出嵌套结果
((6) (9) (12) (15)):
(map (lambda (subseq) (list (reduce #'+ subseq))) '((1 2 3) (2 3 4) (3 4 5) (4 5 6))) - 输出扁平结果
- 如果你使用Clojure:
- 输出扁平结果:
(map #(reduce + %) '((1 2 3) (2 3 4) (3 4 5) (4 5 6)))- 输出嵌套结果:
(map #(list (reduce + %)) '((1 2 3) (2 3 4) (3 4 5) (4 5 6)))
内容的提问来源于stack exchange,提问作者triplej
相关产品推荐
相关产品推荐

