2010-09-18 21 views

Antwort

31
user=> (distinct '(34 56 45 34 56 89 11 4 11 78 11)) 
(34 56 45 89 11 4 78) 
+0

Gibt es eine schnellere Entsprechung für sortierte Listen? – nha

+0

@nha, ich weiß es nicht. – missingfaktor

9

Wenn Sie nicht über die Reihenfolge ist egal, können Sie einfach die Liste in eine Reihe konvertieren:

user=> (set '("a" "b" "c" "a" "lala" "d")) 
#{"a" "b" "c" "d" "lala"} 
+4

Zusätzlich zur Bestellung ist das Schieben in ein Set nicht faul, sondern 'distinct' ist. –

+1

Vielen Dank auch Ihre Antwort. – jeon

+0

Was ist, wenn mir die Bestellung wichtig ist? Zum Beispiel möchte ich das am häufigsten wiederholen und so weiter. – noMAD

3

Dedupe desto schneller Äquivalent für sortierte Listen seit dedupe ist behält nur das vorherige Element im Speicher.

+0

Schön, ich wusste nicht über Deduplizierung, und es ist nur seit clojure 1.7 implementiert - Hier ist ein weiterer Beitrag darüber: http://StackOverflow.com/Questions/25552506/Better-Sequence-Duplicate-Remover/25556645#25556645 –

Verwandte Themen