将序列解开为重复元素序列(clojure)

时间:2010-12-06 19:42:57

标签: clojure

在Clojure中,如何将序列划分为重复元素的子序列?例如。 :

[1 2 2 3 3 3 4 2 2 1 1 1]

[[1] [2 2] [3 3 3] [4] [2 2] [1 1 1]]

我一直在玩一些试图更好地理解clojure的例子,并且已经坚持了一段时间。

2 个答案:

答案 0 :(得分:15)

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))

user> (vec (map vec (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)

(地图(第一个数字)      (按身份划分[1 1 1 3 2 2]))

((3 1)(1 3)(2 2))

三个,然后一个三个,然后是两个两个!