Clojure:'折叠'一个序列(分区,结果)

时间:2014-11-22 14:59:26

标签: clojure

将这样的平面列表变成这样的正确方法是什么:

(1 2 3 4 5 6 7 8 9)

进入一系列向量:

([1 2 3] [4 5 6] [7 8 9])

抱歉,我认为这是工具箱之外的事情,但我无法想到正确的关键字。

2 个答案:

答案 0 :(得分:4)

(->> '(1 2 3 4 5 6 7 8 9) (partition 3) (map vec)) 

获取原始列表,然后将其分区为3,最后将每个分区映射到矢量。

我认为使用->>宏可以让它更好看。

答案 1 :(得分:2)

user> (def flat-seq (range 1 10))
#'user/flat-seq
user> (map vec (partition-all 3 flat-seq))
;=> ([1 2 3] [4 5 6] [7 8 9])