列表的向量加法

发布于 2024-08-25 00:53:22 字数 113 浏览 5 评论 0原文

如果我有一个 N 个列表,每个列表的长度为 M,那么我如何编写一个漂亮的干净函数来返回长度为 M 的单个列表,其中每个元素都是 N 个列表中相应元素的总和?

(开始学习 lisp - 慢慢来!)

If I had a N lists each of length M, how could I write a nice clean function to return a single list of length M, where each element is the sum of the corresponding elements in the N lists?

(starting to learn lisp - go easy!)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

抱猫软卧 2024-09-01 00:53:22

这是 mapapply 函数的工作。这是一种方法,由内森·桑德斯(Nathan Sanders)建议编辑

(define (add-lists . more)
  (apply map + more))

This is a job for the map and apply functions. Here is a way to do it, with an EDIT suggested by Nathan Sanders:

(define (add-lists . more)
  (apply map + more))
帅哥哥的热头脑 2024-09-01 00:53:22

对于更像 matlab 的语法:

(define (piecewise func)
  (lambda more
    (apply map func more)))
(define pw piecewise)

((pw +) '(1 2 3 4 5) '(6 7 8 9 0))
((pw -) '(1 2 3 4 5) '(6 7 8 9 0))
((pw *) '(1 2 3 4 5) '(6 7 8 9 0))
((pw /) '(1 2 3 4 5) '(6 7 8 9 0.1))

输出:

(7 9 11 13 5)
(-5 -5 -5 -5 5)
(6 14 24 36 0)
(1/6 2/7 3/8 4/9 50.0)

For a more matlab like syntax:

(define (piecewise func)
  (lambda more
    (apply map func more)))
(define pw piecewise)

((pw +) '(1 2 3 4 5) '(6 7 8 9 0))
((pw -) '(1 2 3 4 5) '(6 7 8 9 0))
((pw *) '(1 2 3 4 5) '(6 7 8 9 0))
((pw /) '(1 2 3 4 5) '(6 7 8 9 0.1))

outputs:

(7 9 11 13 5)
(-5 -5 -5 -5 5)
(6 14 24 36 0)
(1/6 2/7 3/8 4/9 50.0)
嘿看小鸭子会跑 2024-09-01 00:53:22

这在麻省理工学院的计划中有效。

 (map + '(1 2 3) '(4 5 6) '(7 8 9))
;Value 28: (12 15 18)

Just this works in MIT scheme.

 (map + '(1 2 3) '(4 5 6) '(7 8 9))
;Value 28: (12 15 18)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文