我想要做的是从列表中重新获取一个元素,如果它尊重条件,我会将它附加到一个新列表并保持列表格式。我如何做附加部分?
我正在使用nth
获取元素,并且我尝试了push
的几个变体,但我没有得到我想要的位置。
例如我做(setq a 2)
我现在想要推送4及更高版本8.如何将元素放在那里并保持列表格式?
答案 0 :(得分:2)
如果您想推,请使用push
:
(defparameter *a* ())
(push 1 *a*)
*a* ==> (1)
(push 2 *a*)
*a* ==> (2 1)
针对您的具体任务:
(dolist (x *old-list*)
(when (my-test-p x)
(push x *new-list*)))
(setq *new-list* (nreverse *new-list*))
实际上,这可以使用标准库函数remove-if-not
完成:
(setq *new-list* (remove-if-not #'my-test-p *old-list*))
或者,如果您愿意
(setq *new-list* (remove-if (complement #'my-test-p) *old-list*))