gpt4 book ai didi

clojure - 在 clojure 中删除重复项

转载 作者:行者123 更新时间:2023-12-05 01:43:11 25 4
gpt4 key购买 nike

我有一个序列并试图删除重复项

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]
  1. 两种情况都带来结果,那么使用哪种更好?
  2. 它们之间有什么区别?

最佳答案

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

  1. distinct 是懒惰的
  2. distinct 没有参数是一个转换器
  3. distinct 保持秩序

至于优先选择哪一个,distinct是因为上面的原因,也是因为它说明了你需要什么。我忘记了哪本 Lisp 书谈到了这个(可能是 Let Over Lambda),但是当在两个相似的函数之间做出选择时,更喜欢更具体的那个。 distinct 说明您需要不同的元素。 (into #{} xs) 可能会产生不同的值,但它也会让您的意图被误解。有人可能很容易认为您出于某种原因想要一套。 distinct 缩小了原因的范围。

关于clojure - 在 clojure 中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50102608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com