Gibt es eine common LISP-Funktion zum vergleichen der Inhalte zweier Listen?
In allem, ich will einfach nur, um sicherzustellen, dass zwei Listen die gleichen Elemente enthalten, zu ignorieren, um
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut Steele "set-Unterschied gibt eine Liste der Elemente von Liste1 nicht in liste2. Dieser Vorgang ist nicht destruktiv."
Also, wenn die set-Unterschied ist leer, und die Längen sind die gleichen...http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node152.html#SECTION001950000000000000000
Wenn die Reihenfolge nicht wichtig ist, können Sie gleich. Zum Beispiel,
wahr ist. Also eine Möglichkeit wäre es (Sortierung) in der Liste und verwenden Sie dann gleich. Beachten Sie, dass die Art, destruktiv, so dass, wenn Angelegenheiten, möchten Sie vielleicht, um es zu kopieren ersten.
Wenn sich wiederholende Elemente sind nicht wichtig, siehe auch SET-EXKLUSIV-ODER.
Wenn die Reihenfolge nicht wichtig ist, kann man mit "gleich-setzen":
(gleich-sets
(1 2)
(1 2)) -> T(gleich-sets
(1 2)
(2 1)) -> T(gleich-sets
(1 2 5)
(1 2)) -> NULL(gleich-sets
(1 2)
(1 5 2)) -> NULLSortieren Sie die beiden Listen vergleichen Sie dann:
(sort (copy-list l1) #'<)
oder speichern Sie das Ergebnis Sortieren zurück zu l1 und l2. Auch dieser Ansatz erfordert eine sortierbare Elemente (der hash-Tabelle nicht).