我必须从 lisp 中的列表中删除所有双精度元素..这是一个例子:
(A B C D E A A B F G A) => (A B C D E F G)
我该怎么做?
您正在寻找删除重复项。
;;;(setq eva_lst '(A B C D E A A B F G A))
;;;(eva-remove-dupls-in-lst eva_lst)
(defun eva-remove-dupls-in-lst (eva_lst / A_list B_list N)
(setq A_list eva_lst)
(setq B_list '())
(repeat (length A_list)
(setq N (car A_list))
(setq A_list (vl-remove N A_list))
(setq B_list (append B_list (list N)))
)
(setq B_list (vl-remove 'nil B_list))
)
;(A B C D E F G)
我也是 lisp 新手,但在做作业时遇到了这个。有一个函数“delete-duplicates”用于从列表中删除重复项。因为,您只有一个列表可以执行此操作:
(delete-duplicates '(A B C D E A A B F G A))
或
(remove-duplicates '(A B C D E A A B F G A))
请检查此链接以了解更多详细信息:http://clhs.lisp.se/Body/f_rm_dup.htm#delete-duplicates