我正在编写一个函数来删除列表中的重复项,同时保留最后一个实例。我写了以下代码:
(defun remove-dupli (list)
(setq count1 0)
(dolist (item1 list)
(dolist (item2 list)
(when (equal item1 item2)
(setf count1 (+ 1 count1)))
(if (> count1 1)
(remove item1 list)))
(setq count1 0)))
在这里,我得到了与回报相同的列表。 输入列表:(1 3 4 4 5 4 6) 输出列表:(1 3 4 4 5 4 6)
可能是什么问题?
我尝试使用
(delete)
函数而不是(删除)函数,但每个项目都被删除,并且顺序也被更改。我希望保留最后一个副本实例。
这里有一个提示:
remove
返回一个值。 remove
有一个 :count
命名参数。
CL-USER 3 > (let ((my-list (list 1 2 4 1 3 5 2 1))
(result-list (list)))
(setf result-list (remove 2 my-list :count 1))
(print (list 'removing 'one 2 'from my-list
'result 'is result-list))
result-list)
(REMOVING ONE 2 FROM (1 2 4 1 3 5 2 1) RESULT IS (1 4 1 3 5 2 1))
(1 4 1 3 5 2 1)
救命! Lisp 中的
+
函数未添加到我的模拟银行帐户中:
(defvar *balance* 0)
(defun credit (cents)
(+ *balance* cents))
(defun debit (cents)
(- *balance* cents))
我调用
(credit 42)
后,*balance*
仍然为零。与debit
相同。
任何提示表示赞赏。