如何删除common-lisp中列表中的重复列表? 我试过这个:
(remove-duplicates '( (1 2 3) (1 2 3)))
但它评估为((1 2 3) (1 2 3))
,而不是((1 2 3))
。
感谢。
答案 0 :(得分:8)
使用关键字参数:test
指定定义两个项是否相互重复的函数。大多数lisp函数(包括remove-duplicates
)默认使用eql
来测试相等性。 eql
比equal
严格得多,这可能是你想要使用的。
(remove-duplicates '((1 2 3) (1 2 3)) :test #'equal)
评估为'((1 2 3))
。
有关eql
和equal
之间差异的详细信息,请参阅this post。
答案 1 :(得分:2)
尝试:
(remove-duplicates '((1 2 3) (1 2 3)) :test #'equal)