2013-12-19 50 views
-1

我想要做的是重複地從列表中取一個元素,如果它符合條件,我會將它追加到一個新列表並保持列表格式。如何執行附加部分? 我得到nth的元素,我試過push的幾個變體,但我沒有得到我想要的位置。推送列表

例如我做(setq a 2) 我現在想推4和以後8.如何把元素放在那裏,並保持列表格式?

+1

你需要更多的例子來說明你想要做什麼,就前後而言。現在你的問題只是含糊不清。 –

回答

2

如果你想推,用01​​:

(defparameter *a*()) 
(push 1 *a*) 
*a* ==> (1) 
(push 2 *a*) 
*a* ==> (2 1) 

針對您的特殊任務:

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

(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 (complement #'my-test-p) *old-list*))