在Clojure中,如何将一个序列分成由重复元素组成的子序列?例如:
[1 2 2 3 3 3 4 2 2 1 1 1]
to
[[1] [2 2] [3 3 3] [4] [2 2] [1 1 1]]
我一直在尝试通过一些例子来更好地理解Clojure,但是这个例子卡住了我很长时间。
[1 2 2 3 3 3 4 2 2 1 1 1]
to
[[1] [2 2] [3 3 3] [4] [2 2] [1 1 1]]
我一直在尝试通过一些例子来更好地理解Clojure,但是这个例子卡住了我很长时间。
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]]
(map (juxt count first) (partition-by identity [1 1 1 3 2 2]))
((3 1) (1 3) (2 2))
1个数值为1的连续序列,后跟1个数字3,然后是2个数值为2的连续序列!
mapv
代替map vec...
。 - Jack Westmore