gpt4 book ai didi

lisp - 结果 Lisp 中没有 nil 的列表

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:26 24 4
gpt4 key购买 nike

我必须从所有级别删除列表中出现的所有元素。我的代码是:

(defun sterge(e l)
(cond
((and (atom l) (equal e l)) nil)
((atom l) (list l))
(t (append (apply #'list (mapcar #' (lambda (l) (sterge e l)) l))))
)
)
(defun sterg(e l)
(car (sterge e l))
)

当我给予时:

(sterg 1 '(1 2 1 ( 1 2 1( 1 (1) (1)) (1) 3) (1)(2)))

它显示了输出:

 ((2 (2 (NIL NIL) NIL 3) NIL (2)))

如何删除那个nil??谢谢。

最佳答案

不是返回 nil,而是考虑返回应用于实体 l 其余部分的 stergemapcar 不是解决这个问题的最佳方法;递归函数更好(当然,除非赋值指定使用 mapcar。)

提示:将 l 视为列表并测试 (car l),例如 (atom (car l)) , 将 sterge 应用于 (cdr l)

关于lisp - 结果 Lisp 中没有 nil 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342537/

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