2010-09-18 31 views

Respuesta

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

¿Hay algún equivalente más rápido para las listas ordenadas? – nha

+0

@nha, no sé. – missingfaktor

9

Si no se preocupan por el orden, sólo tiene que convertir la lista a un conjunto:

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

Además de ordenar, presionar en un conjunto no es perezoso, sino 'distinto '. –

+1

Gracias también su respuesta. – jeon

+0

¿Qué pasa si me importa el pedido? Por ejemplo, quiero el más repetido al frente y así sucesivamente. – noMAD

3

Dedupe es el más rápido equivalente para listas ordenadas desde dedupe solo mantiene el elemento anterior en la memoria.

+0

Bueno, no sabía nada sobre dedupe, y veo que solo está implementado desde clojure 1.7 - Aquí hay otra publicación al respecto: http://stackoverflow.com/questions/25552506/better-sequence-duplicate-remover/25556645#25556645 –

Cuestiones relacionadas