我有两个未排序的列表,我需要生成另一个已排序且所有元素都是唯一的列表。
这些元素可以在两个列表中出现多次,并且它们最初是未排序的。
我的功能如下所示:
(defun merge-lists (list-a list-b sort-fn)
"Merges two lists of (x, y) coordinates sorting them and removing dupes"
(let ((prev nil))
(remove-if
(lambda (point)
(let ((ret-val (equal point prev)))
(setf prev point)
ret-val))
(sort
(merge 'list list-a list-b sort-fn) ;'
sort-fn))))
有没有更好的方法来实现同样的目标?
示例调用:
[CL]> (merge-lists '(9 8 4 8 9 7 2) '(1 7 3 9 2 6) #'>)
==> (9 8 7 6 4 3 2 1)