2010-09-18 43 views

回答

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

排序列表有一些更快的等效吗? – nha 2015-01-04 21:37:05

+0

@nha,我不知道。 – missingfaktor 2015-01-06 08:02:24

9

如果你不关心顺序,你可以简单的列表转换为一组:

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

除了订购,推入集合不是懒惰,但'distinct'是。 – 2010-09-18 20:52:09

+1

也谢谢你的回答。 – jeon 2010-09-18 22:36:05

+0

如果我关心订单怎么办?例如,我想要在前面重复最多等等。 – noMAD 2014-03-11 00:40:15

3

重复数据删除是相当的快,因为对于重复数据删除的有序列表只保留先前的元素在内存中。

+0

不错,我不知道关于重复数据删除,并且看到它只是自clojure 1.7以来才实现 - 这里是另一篇关于它的文章:http://stackoverflow.com/questions/25552506/better-sequence-duplicate-remover/25556645#25556645 – 2015-12-18 00:28:28