1

lisp 中的 remove-duplicates 函数仅适用于 (abcd) 之类的简单列表。我的问题是如何从包含嵌套列表的列表中删除重复元素。所以例如

我有一个嵌套列表如下: ( (0 1) (0 2) (0 1) (0 3) )

我想删除在上面的列表中重复两次的 (0 1) 列表之一以获得:

( (0 1) (0 2) (0 3) )

4

1 回答 1

7

:test #'equalremove-duplicates它会做你想做的事。

正如我们在CLHS: Satisfying a Two-Argument Test中看到的,:test默认为#'eql未给出时,并且两个类似(0 1)的列表不是eql,除非它们是同一个列表( eq)。

CL-USER> (remove-duplicates '((0 1) (0 2) (0 1) (0 3)) :test #'equal)
((0 2) (0 1) (0 3))
于 2013-01-23T08:57:05.917 回答