gpt4 book ai didi

lisp 不同长度的两个列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:51:36 25 4
gpt4 key购买 nike

我在处理两个不同长度的列表时遇到困难。

(f '(8 1 2 3 23 12) '(2 9 4 6)) 应该返回 (1 2 3 4 6 8 9 12 23)

这是我的尝试代码。

(defun f (lst lst2)
(cond ((or(null lst) (null lst2)) 0)
(t (sort (cons (first lst) (cons (first lst2) (f (rest lst) (rest lst2)))) #'<))))

另外,你能用 lisp 处理重复项吗?

我将不胜感激。

最佳答案

这可以通过标准函数轻松完成。要从两个列表中列出一个列表,请使用 append , 但是最后一个参数是共享的所以我用 copy-list 复制它自 stable-sort是破坏性的。 delete-duplicates删除结果列表中的重复项。

(defun f (lst1 lst2)
(delete-duplicates (stable-sort (append lst1 (copy-list lst2)) #'<))))

(f '(8 1 2 3 23 12) '(2 9 4 6))
; ==> (1 2 3 4 6 8 9 12 23)

关于lisp 不同长度的两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42394688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com