此页面描述了集合管道模式中的一个操作。有关更多上下文,请阅读

去重

删除重复元素

返回一个删除了所有重复项的新列表。

ruby…
[1,2,3,2,1].uniq
# => [1, 2, 3]
clojure…
(distinct [1 2 3 2 1])
;; => (1 2 3)

一些集合框架有单独的 Set 类来处理集合。这些类会自动删除重复项,并且没有排序 - 这使得它们成为数学集合的合适模型。在这种情况下,您可以使用转换操作将列表转换为集合以删除重复项 - 但如果您想保留排序,这将不合适。其他框架只使用列表来表示集合,依赖于程序员在需要时删除重复项。

元素通常使用相等运算符进行比较。但是,某些语言允许您为比较提供一个 lambda 表达式。

ruby…
["Bach", "Sibelius", "Beethoven", "Elgar", "Schumann"].
  uniq {|c| c[0]}
# => ["Bach", "Sibelius", "Elgar"]