2010-09-18 7 views

Répondre

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

Existe-t-il un équivalent plus rapide pour les listes triées? – nha

+0

@nha, je ne sais pas. – missingfaktor

9

Si vous ne se soucient pas de l'ordre, vous pouvez simplement convertir la liste à un ensemble:

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

En plus de commander, pousser dans un ensemble n'est pas paresseux, mais 'distinct' est. –

+1

Merci également votre réponse. – jeon

+0

Et si je m'intéresse à la commande? Par exemple, je veux le plus répété devant et ainsi de suite. – noMAD

3

Dedupe est l'équivalent plus rapide pour les listes triées depuis dedupe garde seulement l'élément précédent en mémoire.

+0

Nice, je ne savais pas à propos de dedupe, et voir que c'est seulement mis en œuvre depuis clojure 1.7 - Voici un autre post à ce sujet: http://stackoverflow.com/questions/25552506/better-sequence-duplicate-remover/25556645#25556645 –

Questions connexes