首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加两个列表

添加两个列表
EN

Stack Overflow用户
提问于 2014-05-26 21:56:49
回答 1查看 2.7K关注 0票数 1

我想添加两个列表:(1 2 3)和(5 3 4)应该产生(6 5 7)。

函数应该在相应的位置上添加元素,所以即使我有(911)+(5 2 6),它也会产生(14 3 8)。

我的职能

代码语言:javascript
复制
(defun add(l r)
    (setf return-value '())
        (loop for i from 0 to (- (length l) 1)
            do (setf return-value (cons (+(nth i l)(nth i r)) return-value))
        )
    (reverse return-value)
)

我如何才能创建一个能够减去列表的simmilar函数?

EN

回答 1

Stack Overflow用户

发布于 2014-05-27 00:28:00

如果允许您使用标准函数,那么mapcar是您的朋友:

代码语言:javascript
复制
(mapcar #'+ '(1 2 3) (9 7 5))
==> (10 9 8)

同样适用于-

您的函数存在二次性能问题--您不应该使用nth。您还应该将return-valuelet绑定。您还应该使用reverse,因为您正在构建一个新的列表。

编写函数的更习惯的方法是

代码语言:javascript
复制
(defun addl (l r)
  (loop for x in l and y in r collect (+ x y)))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23878202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档