Lisp 推进列表

Lisp 推进列表,lisp,Lisp,我想做的是重复地从列表中获取一个元素,如果它符合条件,我将把它附加到一个新的列表中,并保持列表格式。我如何做附加部分? 我用nth得到元素,我尝试了几个push的变体,但是我没有得到我想要的 例如,我做setqa2 我现在要推送4和更高版本的8。如何将元素放入其中并保持列表格式?如果要推送,请使用: 对于您的特定任务: (dolist (x *old-list*) (when (my-test-p x) (push x *new-list*))) (setq *new-list* (

我想做的是重复地从列表中获取一个元素,如果它符合条件,我将把它附加到一个新的列表中,并保持列表格式。我如何做附加部分? 我用nth得到元素,我尝试了几个push的变体,但是我没有得到我想要的

例如,我做setqa2 我现在要推送4和更高版本的8。如何将元素放入其中并保持列表格式?

如果要推送,请使用:

对于您的特定任务:

(dolist (x *old-list*)
  (when (my-test-p x)
    (push x *new-list*)))
(setq *new-list* (nreverse *new-list*))
实际上,这可以通过标准库函数实现:

或者,如果你愿意的话

(setq *new-list* (remove-if (complement #'my-test-p) *old-list*))

你需要更多的例子来说明你想做什么,包括之前和之后。现在你的问题很模糊。
(setq *new-list* (remove-if-not #'my-test-p *old-list*))
(setq *new-list* (remove-if (complement #'my-test-p) *old-list*))