2010-09-18 15 views

risposta

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

Esiste un equivalente più veloce per gli elenchi ordinati? – nha

+0

@nha, non lo so. – missingfaktor

9

Se non vi interessa circa l'ordine, si può semplicemente convertire l'elenco in un set:

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

Oltre all'ordinamento, l'inserimento in un set non è pigro, ma "distinto". –

+1

Grazie anche la tua risposta. – jeon

+0

Cosa succede se mi interessa dell'ordine? Per esempio, voglio il più ripetuto di fronte e così via. – noMAD

3

deduplicazione è la più veloce equivalente per liste ordinate dal deduplicazione mantiene solo l'elemento precedente in memoria.

+0

Bello, non sapevo nulla della deduplica e vedo che è implementato solo da Clojure 1.7 - Ecco un altro post a riguardo: http://stackoverflow.com/questions/25552506/better-sequence-duplicate-remover/25556645#25556645 –

Problemi correlati