Clojure 与包含所有元素的分区相关的函数?
Clojure的Clojure 与包含所有元素的分区相关的函数?,clojure,Clojure,Clojure的分区函数的这种行为不是我需要的: user=> (partition 3 (range 3)) ((0 1 2)) user=> (partition 3 (range 4)) ((0 1 2)) user=> (partition 3 (range 5)) ((0 1 2)) user=> (partition 3 (range 6)) ((0 1 2) (3 4 5)) 我需要包括收藏的“剩余”部分,例如: user=> (partition*
分区
函数的这种行为不是我需要的:
user=> (partition 3 (range 3))
((0 1 2))
user=> (partition 3 (range 4))
((0 1 2))
user=> (partition 3 (range 5))
((0 1 2))
user=> (partition 3 (range 6))
((0 1 2) (3 4 5))
我需要包括收藏的“剩余”部分,例如:
user=> (partition* 3 (range 4))
((0 1 2) (3))
user=> (partition* 3 (range 5))
((0 1 2) (3 4))
是否有一个标准的库函数可以满足我的要求?在
分区的4进制版本中有一个pad
参数:
user=> (partition 3 3 [] (range 4))
((0 1 2) (3))
user=> (partition 3 3 [] (range 5))
((0 1 2) (3 4))
文档字符串:
user=> (doc partition)
-------------------------
clojure.core/partition
([n coll] [n step coll] [n step pad coll])
Returns a lazy sequence of lists of n items each, at offsets step
apart. If step is not supplied, defaults to n, i.e. the partitions
do not overlap. If a pad collection is supplied, use its elements as
necessary to complete last partition upto n items. In case there are
not enough padding elements, return a partition with less than n items.
您正在寻找分区all
。只需在您的示例中替换它:
user> (partition-all 3 (range 4))
((0 1 2) (3))
user> (partition-all 3 (range 5))
((0 1 2) (3 4))