LISP功能去除指甲 [英] LISP function to remove nils
本文介绍了LISP功能去除指甲的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在LISP中编写一个函数,该函数将完全删除列表中的所有NILS.该列表可能是嵌套的,这意味着它可以在其中包含其他列表.例如,清单(((州L L L L L)NIL(州L L R L L)NIL)"应转换为((州L L L L L(州L L R L L))).
I want to write a function in LISP that will completely remove all NILS in a list. The list may be nested, meaning it can contain other lists inside. For example the list '((state L L L L) NIL (state L L R L) NIL) should be tranformed into '((STATE L L L L) (STATE L L R L)).
推荐答案
(defun remove-nil-recursively (x)
(if (listp x)
(mapcar #'remove-nil-recursively
(remove nil x))
x))
为您的示例工作:
[1]> (remove-nil-recursively '((state L L L L) NIL (state L L R L) NIL))
((STATE L L L L) (STATE L L R L))
并带有嵌套列表:
[2]> (remove-nil-recursively '(NIL (state L L nil R L) NIL))
((STATE L L R L))
但是要小心:
[3]> (remove-nil-recursively '(NIL (state L L (nil) R L) NIL))
((STATE L L NIL R L))
这篇关于LISP功能去除指甲的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文