Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除clojure中的重复项_Clojure - Fatal编程技术网

删除clojure中的重复项

删除clojure中的重复项,clojure,Clojure,我有一个序列,正在尝试删除重复项 case 1: (vec (into #{} [1 1 2 2 3 3])) ; => [1 2 3] case 2: (distinct [1 1 2 2 3 3]) ; => [1 2 3] 这两种情况都会带来结果,那么哪种情况更适合使用呢 这两者有什么区别 至于差异,jas在其评论中涵盖了大部分差异: distinct是惰性的 distinct不带参数是传感器 distinct维持秩序 至于哪一个是首选的,distinct是出于上述

我有一个序列,正在尝试删除重复项

case 1: 

(vec (into #{} [1 1 2 2 3 3])) ; => [1 2 3]


case 2:

(distinct [1 1 2 2 3 3]) ; => [1 2 3]
  • 这两种情况都会带来结果,那么哪种情况更适合使用呢
  • 这两者有什么区别

  • 至于差异,jas在其评论中涵盖了大部分差异:

  • distinct
    是惰性的
  • distinct
    不带参数是传感器
  • distinct
    维持秩序

  • 至于哪一个是首选的,
    distinct
    是出于上述原因,但也因为它解释了您需要什么。我忘记了哪本Lisp书谈到过这个(可能已经忽略了Lambda),但是如果要在两个类似的函数之间进行选择,请选择更具体的函数
    distinct
    说明您需要不同的元素
    (into#{}xs)
    可能会产生不同的值,但它也会让您的意图被误解。有人很容易认为你出于某种原因想要一套
    distinct
    缩小了原因。

    至于差异,jas在他的评论中涵盖了大部分差异:

  • distinct
    是惰性的
  • distinct
    不带参数是传感器
  • distinct
    维持秩序

  • 至于哪一个是首选的,
    distinct
    是出于上述原因,但也因为它解释了您需要什么。我忘记了哪本Lisp书谈到过这个(可能已经忽略了Lambda),但是如果要在两个类似的函数之间进行选择,请选择更具体的函数
    distinct
    说明您需要不同的元素
    (into#{}xs)
    可能会产生不同的值,但它也会让您的意图被误解。有人很容易认为你出于某种原因想要一套
    distinct
    缩小了原因的范围。

    如果我错了,请有人纠正我,但我认为一个很大的区别是
    distinct
    将返回一个惰性序列,因此可以有效地用于非常大(甚至无限)的集合
    into
    在下面使用
    reduce
    ,因此必须在前面遍历集合(我认为)。另外,
    distinct
    将保持其元素的顺序,而
    into
    可能会混淆它们。如果这些都不是问题,那么distinct肯定有优势,可以清楚地说出它在做什么。吹毛求疵:集合会把它们混在一起(集合中的值会混在一起)。同样,在没有vec的情况下,生成的集合可以作为一个函数,稍后可以使用。因此,对于“更好”的定义,要么对答案中已经存在的内容使用distinct,要么只使用集合(无vec)。如果我错了,请有人纠正我,但我认为一个很大的区别是
    distinct
    将返回一个惰性序列,因此可以有效地用于非常大(甚至无限)的集合
    into
    在下面使用
    reduce
    ,因此必须在前面遍历集合(我认为)。另外,
    distinct
    将保持其元素的顺序,而
    into
    可能会混淆它们。如果这些都不是问题,那么distinct肯定有优势,可以清楚地说出它在做什么。吹毛求疵:集合会把它们混在一起(集合中的值会混在一起)。同样,在没有vec的情况下,生成的集合可以作为一个函数,稍后可以使用。因此,对于“更好”的定义,要么对答案中已经存在的内容使用distinct,要么只使用集合(无vec)。