如何使用clojure对特定范围内的年龄进行分组?

时间:2016-09-21 20:42:57

标签: clojure

我有一个列表,其人的年龄如(12,23,34,33,34,45,56 ......)近200个数字。我想分组(10-20)(21-30)(31-40)......(91-100)年龄组。

我如何在clojure中完成。

谢谢

2 个答案:

答案 0 :(得分:4)

以下是一项实施,主要功能是group-byquot

(defn group-by-tens [numbers]
  (->> numbers (group-by #(quot % 10))
    (sort-by first)
    (map second)))

示例:

(group-by-tens [15 28 35 6 9 37 33 47 11 38 4 27 49 47 38 20 36 49 27 30])
=> ([6 9 4] [15 11] [28 27 20 27] [35 37 33 38 38 36 30] [47 49 47 49])

答案 1 :(得分:2)

另外,如果您的年龄值已排序(如问题中的示例),您可以对它们进行分区(或以其他方式排序和分区):

user> (partition-by #(quot % 10) 
                    [1 2 3 4 10 12 16 23 27 29 33 34 45 59 71 72])
;;=> ((1 2 3 4) (10 12 16) (23 27 29) (33 34) (45) (59) (71 72))