首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用clojure的不同范围的群向量

使用clojure的不同范围的群向量
EN

Stack Overflow用户
提问于 2016-10-06 19:26:26
回答 2查看 112关注 0票数 1

我有一个包含重复值的表单向量列表。

代码语言:javascript
复制
([2.0 3.0] [2.0 4.0] [2.0 4.0] [2.0 12.0] [2.0 23.0] [2.0 6.0] [2.0 8.0] 
 [1.0 5.0]p [1.0 9.0] [2.0 8.0] [2.0 16.0] [2.0 19.0] [2.0 13.0]
 [2.0 18.0] [1.0 23.0] [2.0 24.0] [2.0 22.0] [2.0 33.0] [2.0 27.0]
 [1.0 29.0] [2.0 32.0] [1.0 35.0] [2.0 39.0])

我希望使用向量中的第二个值将它们分组到不同的范围。

比如分组(1-5)(6-10).

这里的结果应该是重复的值。

代码语言:javascript
复制
(([2.0 3.0] [2.0 3.0] [2.0 4.0] [2.0 4.0] [1.0 5.0])
 ([2.0 6.0] [2.0 8.0] [2.0 8.0] [1.0 9.0])
 ([2.0 12.0] [2.0 13.0])
 ([2.0 16.0] [2.0 18.0] [2.0 19.0])
 ([2.0 22.0] [1.0 23.0] [2.0 23.0] [2.0 24.0])
 ([2.0 27.0] [2.0 29.0])
 ([2.0 32.0] [2.0 33.0] [1.0 35.0])
 ([2.0 39.0]))

在使用map时,组-by不考虑重复值,只给出不同的值。我希望所有重复的值也被分组。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-07 11:49:44

代码语言:javascript
复制
(->> '([2.0 3.0] [2.0 4.0] [2.0 4.0] [2.0 12.0] [2.0 23.0] [2.0 6.0] [2.0 8.0] 
       [1.0 5.0] [1.0 9.0] [2.0 8.0] [2.0 16.0] [2.0 19.0] [2.0 13.0]
       [2.0 18.0] [1.0 23.0] [2.0 24.0] [2.0 22.0] [2.0 33.0] [2.0 27.0]
       [1.0 29.0] [2.0 32.0] [1.0 35.0] [2.0 39.0])
     (group-by (comp #(Math/ceil (/ % 5)) second))
     (sort-by first)
     (map second))

第一组除以第二个数除以5的结果。

然后按其键对地图进行排序(映射也是键值元组的列表)

然后在此基础上映射second,仅获取每个键的收集值。

票数 1
EN

Stack Overflow用户

发布于 2016-10-06 20:48:58

您可以将group-by与计算桶的函数一起使用。

代码语言:javascript
复制
(defn bucket [v]
  (Math/ceil (/ (second v) 5)))

(defn my-grouping [vs]
  (-> (group-by bucket vs)
      (map (range 1.0 8.0)))) ; quick range hack, should calculate from input

我不认为这只会带来不同的价值。

(我把正确范围的计算留给了读者。)

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

https://stackoverflow.com/questions/39904148

复制
相关文章

相似问题

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