在 Lisp 中删除列表中的双元素

问题描述 投票:0回答:3

我必须从 lisp 中的列表中删除所有双精度元素..这是一个例子:

(A B C D E A A B F G A) => (A B C D E F G)

我该怎么做?

list lisp common-lisp duplicates
3个回答
11
投票

您正在寻找删除重复项


0
投票
;;;(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) 

-1
投票

我也是 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

© www.soinside.com 2019 - 2024. All rights reserved.