pro*_*eek 1 lisp comparison common-lisp
假设我有两个相同但不同顺序的lisp列表:'(A B C)和' (C B A).如何检查它们是否相同(在元素相同的意义上)?
CL-USER> (equal '(a b c) '(c b a))
NIL
Run Code Online (Sandbox Code Playgroud)
像这样:
(not (set-exclusive-or '(a b c) '(c b a)))
Run Code Online (Sandbox Code Playgroud)
T如果两组相等则返回,否则返回NIL.
[编辑]如果他们不是真正的集合,那么你可以使用这个:
(not (set-exclusive-or
(remove-duplicates '(a b c))
(remove-duplicates '(c b a))))
Run Code Online (Sandbox Code Playgroud)