【发布时间】:2017-02-23 03:05:27
【问题描述】:
有没有一种有效的方法可以在 Lisp 中合并两个列表,这样如果它们有共同的元素,那么这些元素只会在结果列表中出现一次?
目前,我有以下代码:
(defun divisible-by-5 (num)
(zerop (mod num 5)))
(defun divisible-by-3 (num)
(zerop (mod num 3)))
(remove-if-not #'dividable-by-5 '(loop for i from 1 upto 10 collect i))
(remove-if-not #'divisible-by-3 '(loop for i from 1 upto 10 collect i))
我想以上述方式合并底部表单返回的两个列表以合并到on中。
【问题讨论】:
-
函数UNION怎么样?
-
@sds 这个问题是关于如何实现自己的
union函数而不是使用内置函数。 -
为什么“可分”和“可分”?
-
@Barmar:你是对的;但是,除了提到
union的其他问题的答案之一之外,这个问题没有任何额外的见解。 -
您的列表已排序,您可以调用
merge并删除单次传递中唯一的值(并仅保留其中一个重复项)。
标签: list merge lisp common-lisp