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*

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