首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在clojure中按标识划分集合?

如何在clojure中按标识划分集合?
EN

Stack Overflow用户
提问于 2019-09-23 18:22:21
回答 1查看 126关注 0票数 1

向量中的以下clojure代码dedupe元素:

代码语言:javascript
复制
user> (partition-by identity [1 2 2 3 3 3 4 2 2 1 1 1])
((1) (2 2) (3 3 3) (4) (2 2) (1 1 1))
  1. 它是如何完成任务的?
  2. 如何一步一步地看到结果集合是如何构建的?
EN

回答 1

Stack Overflow用户

发布于 2019-09-23 20:00:45

如果您还没有看到它,一定要对Clojure CheatSheet进行书签。

用良好的信息和示例单击partition-by 带你去ClojureDocs.org

单击右上角以查看Clojure源代码.请看第二个使用函数f和集合coll的特性

代码语言:javascript
复制
 ([f coll]
     (lazy-seq
      (when-let [s (seq coll)]
        (let [fst (first s)
              fv (f fst)
              run (cons fst (take-while #(= fv (f %)) (next s)))]
          (cons run (partition-by f (seq (drop (count run) s))))))))

因此,fst是集合中的第一项,而fv是使用f函数进行转换的值。然后,它将使用与fv匹配的所有项,此时它将与第一个不匹配项一起递归。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58068125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档