1
lisp中的remove-duplicates函數只適用於簡單的列表,如(a b c d)。 我的問題是,我如何從列表中嵌套列表中刪除重複的元素。因此,例如刪除lisp中嵌套列表的重複元素
我有嵌套列表的列表如下:((0 1)(0 2)(0 1)(0 3))
和我想刪除的一個(0 1 ),這是該列表內重複兩次以上列出來獲得:
((0 1)(0 2)(0 3))
lisp中的remove-duplicates函數只適用於簡單的列表,如(a b c d)。 我的問題是,我如何從列表中嵌套列表中刪除重複的元素。因此,例如刪除lisp中嵌套列表的重複元素
我有嵌套列表的列表如下:((0 1)(0 2)(0 1)(0 3))
和我想刪除的一個(0 1 ),這是該列表內重複兩次以上列出來獲得:
((0 1)(0 2)(0 3))
給:test #'equal
到remove-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))