Skip to content

Partition ​

The collection split into consecutive, non-overlapping chunks of length n.

✓ checked against that system · ! checked, with disagreements (hover a chip)WikipediaPartition of a setMathWorldSetPartitionWikidataQ381060Britannicatopic/partition-of-a-setWolfram LanguagePartition✓
Partition(collection, n)the collection split into non-overlapping chunks of length n.
Partition(collection, n, d)overlapping sliding windows of length n, offset by d between windows.
Partition(collection, {n1, n2, …}, d)a rank-k array cut into rectangular blocks of shape {n1,n2,…}\{n_1, n_2, …\}, offset by d (shared, or one per dimension) between windows — a matrix into overlapping 2×2 blocks, say.
Partition(collection, n, d, {kL, kR}, pad?)sliding windows whose overhang past either end of the collection wraps around cyclically, or — with a trailing pad — is filled with pad instead.
Typed signatures
TypePackageApplies
(any, any, any?, any?, any?) -> anycombinatoricsreplaces compute-enginealways
(indexed_collection<T>, ((T) any -> boolean) | integer, integer?) -> list<list<T>> where T: anycompute-enginealways

Domain: Collections

Details
  • Flatten undoes Partition: chunking and re-flattening recovers the original list — when the length divides evenly.
  • With d<nd < n, windows overlap; the two-argument form is equivalent to d=nd = n, giving non-overlapping chunks.
  • A ragged remainder, shorter than nn, is dropped rather than kept as a partial chunk.
  • A list of sizes generalizes chunking to a rank-k array: each dimension gets its own window size (and, optionally, its own offset).
  • The overhang pair {kL,kR}\{k_L, k_R\} pins where the first window starts and the last one ends, each counted from the near end of the collection — 1-based, negative counting from the far end of the WINDOW instead. Without a padding element, an overhang past either end wraps around cyclically.

Examples

2 more kept as data, checked against the oracles
Basic #
live ↗
InPartition([1,2,3,4,5,6],2)\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6\bigr\rbrack, 2)Out[[1,2],[3,4],[5,6]]\bigl\lbrack\bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack3, 4\bigr\rbrack, \bigl\lbrack5, 6\bigr\rbrack\bigr\rbrack
live ↗
InPartition([a,b,c,d,k,f],2)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f\bigr\rbrack, 2)Out[[a,b],[c,d],[k,f]]\bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d\bigr\rbrack, \bigl\lbrack k, f\bigr\rbrack\bigr\rbrack
live ↗
InPartition([a,b,c,d,k,f],3,1)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f\bigr\rbrack, 3, 1)Out[[a,b,c],[b,c,d],[c,d,k],[d,k,f]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack\bigr\rbrack
live ↗
InPartition([a,b,c,d,k,f],UpTo(4))\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f\bigr\rbrack, \mathrm{UpTo}(4))Out[[a,b,c,d],[k,f]]\bigl\lbrack\bigl\lbrack a, b, c, d\bigr\rbrack, \bigl\lbrack k, f\bigr\rbrack\bigr\rbrack
live ↗
InPartition([a,b,c,d,k,f],5,1,[1,1])\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f\bigr\rbrack, 5, 1, \bigl\lbrack1, 1\bigr\rbrack)Out[[a,b,c,d,k],[b,c,d,k,f],[c,d,k,f,a],[d,k,f,a,b],[k,f,a,b,c],[f,a,b,c,d]]\bigl\lbrack\bigl\lbrack a, b, c, d, k\bigr\rbrack, \bigl\lbrack b, c, d, k, f\bigr\rbrack, \bigl\lbrack c, d, k, f, a\bigr\rbrack, \bigl\lbrack d, k, f, a, b\bigr\rbrack, \bigl\lbrack k, f, a, b, c\bigr\rbrack, \bigl\lbrack f, a, b, c, d\bigr\rbrack\bigr\rbrack
live ↗
InPartition([a,b,c,d,k,f],5,1,[−1,1])\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f\bigr\rbrack, 5, 1, \bigl\lbrack-1, 1\bigr\rbrack)Out[[c,d,k,f,a],[d,k,f,a,b],[k,f,a,b,c],[f,a,b,c,d],[a,b,c,d,k],[b,c,d,k,f],[c,d,k,f,a],[d,k,f,a,b],[k,f,a,b,c],[f,a,b,c,d]]\bigl\lbrack\bigl\lbrack c, d, k, f, a\bigr\rbrack, \bigl\lbrack d, k, f, a, b\bigr\rbrack, \bigl\lbrack k, f, a, b, c\bigr\rbrack, \bigl\lbrack f, a, b, c, d\bigr\rbrack, \bigl\lbrack a, b, c, d, k\bigr\rbrack, \bigl\lbrack b, c, d, k, f\bigr\rbrack, \bigl\lbrack c, d, k, f, a\bigr\rbrack, \bigl\lbrack d, k, f, a, b\bigr\rbrack, \bigl\lbrack k, f, a, b, c\bigr\rbrack, \bigl\lbrack f, a, b, c, d\bigr\rbrack\bigr\rbrack
live ↗
InPartition([a,b,c,d,k,f],3,1,[1,1],pad)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f\bigr\rbrack, 3, 1, \bigl\lbrack1, 1\bigr\rbrack, \mathrm{pad})Out[[a,b,c],[b,c,d],[c,d,k],[d,k,f],[k,f,pad],[f,pad,pad]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack k, f, \mathrm{pad}\bigr\rbrack, \bigl\lbrack f, \mathrm{pad}, \mathrm{pad}\bigr\rbrack\bigr\rbrack
live ↗
InPartition([a,b,c,d,k,f],3,1,[−1,−1],pad)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f\bigr\rbrack, 3, 1, \bigl\lbrack-1, -1\bigr\rbrack, \mathrm{pad})Out[[pad,pad,a],[pad,a,b],[a,b,c],[b,c,d],[c,d,k],[d,k,f]]\bigl\lbrack\bigl\lbrack\mathrm{pad}, \mathrm{pad}, a\bigr\rbrack, \bigl\lbrack\mathrm{pad}, a, b\bigr\rbrack, \bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack\bigr\rbrack
live ↗
InPartition([a,b,c,d,k,f],3,1,[−1,1],pad)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f\bigr\rbrack, 3, 1, \bigl\lbrack-1, 1\bigr\rbrack, \mathrm{pad})Out[[pad,pad,a],[pad,a,b],[a,b,c],[b,c,d],[c,d,k],[d,k,f],[k,f,pad],[f,pad,pad]]\bigl\lbrack\bigl\lbrack\mathrm{pad}, \mathrm{pad}, a\bigr\rbrack, \bigl\lbrack\mathrm{pad}, a, b\bigr\rbrack, \bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack k, f, \mathrm{pad}\bigr\rbrack, \bigl\lbrack f, \mathrm{pad}, \mathrm{pad}\bigr\rbrack\bigr\rbrack
live ↗
InPartition([a,b,c,d,k,f],4,1,[−1,1],[pad,dap])\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f\bigr\rbrack, 4, 1, \bigl\lbrack-1, 1\bigr\rbrack, \bigl\lbrack\mathrm{pad}, \mathrm{dap}\bigr\rbrack)Out[[dap,pad,dap,a],[pad,dap,a,b],[dap,a,b,c],[a,b,c,d],[b,c,d,k],[c,d,k,f],[d,k,f,pad],[k,f,pad,dap],[f,pad,dap,pad]]\bigl\lbrack\bigl\lbrack\mathrm{dap}, \mathrm{pad}, \mathrm{dap}, a\bigr\rbrack, \bigl\lbrack\mathrm{pad}, \mathrm{dap}, a, b\bigr\rbrack, \bigl\lbrack\mathrm{dap}, a, b, c\bigr\rbrack, \bigl\lbrack a, b, c, d\bigr\rbrack, \bigl\lbrack b, c, d, k\bigr\rbrack, \bigl\lbrack c, d, k, f\bigr\rbrack, \bigl\lbrack d, k, f, \mathrm{pad}\bigr\rbrack, \bigl\lbrack k, f, \mathrm{pad}, \mathrm{dap}\bigr\rbrack, \bigl\lbrack f, \mathrm{pad}, \mathrm{dap}, \mathrm{pad}\bigr\rbrack\bigr\rbrack
Scope #

A third, offset argument produces overlapping sliding windows

live ↗
InPartition([1,2,3,4,5,6],3,1)\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6\bigr\rbrack, 3, 1)Out[[1,2,3],[2,3,4],[3,4,5],[4,5,6]]\bigl\lbrack\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack2, 3, 4\bigr\rbrack, \bigl\lbrack3, 4, 5\bigr\rbrack, \bigl\lbrack4, 5, 6\bigr\rbrack\bigr\rbrack

Windows of 3 with offset 2 share one element with their neighbour

live ↗
InPartition([1,2,3,4,5,6,7],3,2)\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6, 7\bigr\rbrack, 3, 2)Out[[1,2,3],[3,4,5],[5,6,7]]\bigl\lbrack\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack3, 4, 5\bigr\rbrack, \bigl\lbrack5, 6, 7\bigr\rbrack\bigr\rbrack

An offset larger than the size skips elements between chunks

live ↗
InPartition([1,2,3,4,5,6,7],2,3)\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6, 7\bigr\rbrack, 2, 3)Out[[1,2],[4,5]]\bigl\lbrack\bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack4, 5\bigr\rbrack\bigr\rbrack

A list of sizes cuts a matrix into overlapping 2×22 \times 2 blocks

live ↗
InPartition([[11,12,13],[21,22,23],[31,32,33]],[2,2],1)\mathrm{Partition}(\bigl\lbrack\bigl\lbrack11, 12, 13\bigr\rbrack, \bigl\lbrack21, 22, 23\bigr\rbrack, \bigl\lbrack31, 32, 33\bigr\rbrack\bigr\rbrack, \bigl\lbrack2, 2\bigr\rbrack, 1)Out[[[[11,12],[21,22]],[[12,13],[22,23]]],[[[21,22],[31,32]],[[22,23],[32,33]]]]\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack11, 12\bigr\rbrack, \bigl\lbrack21, 22\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack12, 13\bigr\rbrack, \bigl\lbrack22, 23\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack\bigl\lbrack21, 22\bigr\rbrack, \bigl\lbrack31, 32\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack22, 23\bigr\rbrack, \bigl\lbrack32, 33\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack

UpTo(4) allows a shorter final chunk, unlike a plain integer count

live ↗
InPartition([1,2,3,4,5,6],UpTo(4))\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6\bigr\rbrack, \mathrm{UpTo}(4))Out[[1,2,3,4],[5,6]]\bigl\lbrack\bigl\lbrack1, 2, 3, 4\bigr\rbrack, \bigl\lbrack5, 6\bigr\rbrack\bigr\rbrack

Overhangs {1,1}\{1, 1\} wrap cyclically until the last window starts at the last element

live ↗
InPartition([1,2,3,4,5,6],5,1,[1,1])\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6\bigr\rbrack, 5, 1, \bigl\lbrack1, 1\bigr\rbrack)Out[[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,1],[4,5,6,1,2],[5,6,1,2,3],[6,1,2,3,4]]\bigl\lbrack\bigl\lbrack1, 2, 3, 4, 5\bigr\rbrack, \bigl\lbrack2, 3, 4, 5, 6\bigr\rbrack, \bigl\lbrack3, 4, 5, 6, 1\bigr\rbrack, \bigl\lbrack4, 5, 6, 1, 2\bigr\rbrack, \bigl\lbrack5, 6, 1, 2, 3\bigr\rbrack, \bigl\lbrack6, 1, 2, 3, 4\bigr\rbrack\bigr\rbrack

Overhangs {−1,1}\{-1, 1\}: the first window ends at the first element, the last starts at the last

live ↗
InPartition([1,2,3,4,5,6],5,1,[−1,1])\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6\bigr\rbrack, 5, 1, \bigl\lbrack-1, 1\bigr\rbrack)Out[[3,4,5,6,1],[4,5,6,1,2],[5,6,1,2,3],[6,1,2,3,4],[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,1],[4,5,6,1,2],[5,6,1,2,3],[6,1,2,3,4]]\bigl\lbrack\bigl\lbrack3, 4, 5, 6, 1\bigr\rbrack, \bigl\lbrack4, 5, 6, 1, 2\bigr\rbrack, \bigl\lbrack5, 6, 1, 2, 3\bigr\rbrack, \bigl\lbrack6, 1, 2, 3, 4\bigr\rbrack, \bigl\lbrack1, 2, 3, 4, 5\bigr\rbrack, \bigl\lbrack2, 3, 4, 5, 6\bigr\rbrack, \bigl\lbrack3, 4, 5, 6, 1\bigr\rbrack, \bigl\lbrack4, 5, 6, 1, 2\bigr\rbrack, \bigl\lbrack5, 6, 1, 2, 3\bigr\rbrack, \bigl\lbrack6, 1, 2, 3, 4\bigr\rbrack\bigr\rbrack

A padding element fills the overhang instead of wrapping around

live ↗
InPartition([1,2,3,4,5,6],3,1,[1,1],x)\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6\bigr\rbrack, 3, 1, \bigl\lbrack1, 1\bigr\rbrack, x)Out[[1,2,3],[2,3,4],[3,4,5],[4,5,6],[5,6,x],[6,x,x]]\bigl\lbrack\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack2, 3, 4\bigr\rbrack, \bigl\lbrack3, 4, 5\bigr\rbrack, \bigl\lbrack4, 5, 6\bigr\rbrack, \bigl\lbrack5, 6, x\bigr\rbrack, \bigl\lbrack6, x, x\bigr\rbrack\bigr\rbrack

Padding on the left, with overhangs {−1,−1}\{-1, -1\}

live ↗
InPartition([1,2,3,4,5,6],3,1,[−1,−1],x)\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6\bigr\rbrack, 3, 1, \bigl\lbrack-1, -1\bigr\rbrack, x)Out[[x,x,1],[x,1,2],[1,2,3],[2,3,4],[3,4,5],[4,5,6]]\bigl\lbrack\bigl\lbrack x, x, 1\bigr\rbrack, \bigl\lbrack x, 1, 2\bigr\rbrack, \bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack2, 3, 4\bigr\rbrack, \bigl\lbrack3, 4, 5\bigr\rbrack, \bigl\lbrack4, 5, 6\bigr\rbrack\bigr\rbrack

Padding on both sides, with overhangs {−1,1}\{-1, 1\}

live ↗
InPartition([1,2,3,4,5,6],3,1,[−1,1],x)\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6\bigr\rbrack, 3, 1, \bigl\lbrack-1, 1\bigr\rbrack, x)Out[[x,x,1],[x,1,2],[1,2,3],[2,3,4],[3,4,5],[4,5,6],[5,6,x],[6,x,x]]\bigl\lbrack\bigl\lbrack x, x, 1\bigr\rbrack, \bigl\lbrack x, 1, 2\bigr\rbrack, \bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack2, 3, 4\bigr\rbrack, \bigl\lbrack3, 4, 5\bigr\rbrack, \bigl\lbrack4, 5, 6\bigr\rbrack, \bigl\lbrack5, 6, x\bigr\rbrack, \bigl\lbrack6, x, x\bigr\rbrack\bigr\rbrack
live ↗
InPartition([a,b,c,d,k,f,g],3)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3)Out[[a,b,c],[d,k,f]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack\bigr\rbrack

Overlapping windows of three, sliding by one; the short remainder is dropped

live ↗
InPartition([a,b,c,d,k,f,g],3,1)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 1)Out[[a,b,c],[b,c,d],[c,d,k],[d,k,f],[k,f,g]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack k, f, g\bigr\rbrack\bigr\rbrack

UpTo keeps the final short block instead of dropping it

live ↗
InPartition([a,b,c,d,k,f,g],UpTo(3))\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, \mathrm{UpTo}(3))Out[[a,b,c],[d,k,f],[g]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack g\bigr\rbrack\bigr\rbrack

An overhang of one wraps around cyclically to fill the last block

live ↗
InPartition([a,b,c,d,k,f,g],3,3,1)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 3, 1)Out[[a,b,c],[d,k,f],[g,a,b]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack g, a, b\bigr\rbrack\bigr\rbrack

A single padding element fills the overhang instead of wrapping

live ↗
InPartition([a,b,c,d,k,f,g],3,3,1,x)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 3, 1, x)Out[[a,b,c],[d,k,f],[g,x,x]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack g, x, x\bigr\rbrack\bigr\rbrack

A padding list is aligned with the positions, so the last block ends in y,zy, z

live ↗
InPartition([a,b,c,d,k,f,g],3,3,1,[x,y,z])\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 3, 1, \bigl\lbrack x, y, z\bigr\rbrack)Out[[a,b,c],[d,k,f],[g,y,z]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack g, y, z\bigr\rbrack\bigr\rbrack

An empty padding list gives a short final block

live ↗
InPartition([a,b,c,d,k,f,g],3,3,1,[])\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 3, 1, \bigl\lbrack\bigr\rbrack)Out[[a,b,c],[d,k,f],[g]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack g\bigr\rbrack\bigr\rbrack

A negative overhang puts the short block at the front

live ↗
InPartition([a,b,c,d,k,f,g],3,3,−1,[])\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 3, -1, \bigl\lbrack\bigr\rbrack)Out[[a],[b,c,d],[k,f,g]]\bigl\lbrack\bigl\lbrack a\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack k, f, g\bigr\rbrack\bigr\rbrack

Overhang at the end pads the windows that run off the list

live ↗
InPartition([a,b,c,d,k,f,g],3,1,1,x)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 1, 1, x)Out[[a,b,c],[b,c,d],[c,d,k],[d,k,f],[k,f,g],[f,g,x],[g,x,x]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack k, f, g\bigr\rbrack, \bigl\lbrack f, g, x\bigr\rbrack, \bigl\lbrack g, x, x\bigr\rbrack\bigr\rbrack

Overhang at the start pads windows that begin before the list

live ↗
InPartition([a,b,c,d,k,f,g],3,1,−1,x)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 1, -1, x)Out[[x,x,a],[x,a,b],[a,b,c],[b,c,d],[c,d,k],[d,k,f],[k,f,g]]\bigl\lbrack\bigl\lbrack x, x, a\bigr\rbrack, \bigl\lbrack x, a, b\bigr\rbrack, \bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack k, f, g\bigr\rbrack\bigr\rbrack

Overhang allowed at both ends gives every window touching the list

live ↗
InPartition([a,b,c,d,k,f,g],3,1,[−1,1],x)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 1, \bigl\lbrack-1, 1\bigr\rbrack, x)Out[[x,x,a],[x,a,b],[a,b,c],[b,c,d],[c,d,k],[d,k,f],[k,f,g],[f,g,x],[g,x,x]]\bigl\lbrack\bigl\lbrack x, x, a\bigr\rbrack, \bigl\lbrack x, a, b\bigr\rbrack, \bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack k, f, g\bigr\rbrack, \bigl\lbrack f, g, x\bigr\rbrack, \bigl\lbrack g, x, x\bigr\rbrack\bigr\rbrack

Limits [1,−1][1,-1] allow no overhang, matching the plain windows

live ↗
InPartition([a,b,c,d,k,f,g],3,1,[1,−1],x)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 1, \bigl\lbrack1, -1\bigr\rbrack, x)Out[[a,b,c],[b,c,d],[c,d,k],[d,k,f],[k,f,g]]\bigl\lbrack\bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack k, f, g\bigr\rbrack\bigr\rbrack

Asymmetric limits: one pad at the front, two at the back

live ↗
InPartition([a,b,c,d,k,f,g],3,1,[2,1],x)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 1, \bigl\lbrack2, 1\bigr\rbrack, x)Out[[x,a,b],[a,b,c],[b,c,d],[c,d,k],[d,k,f],[k,f,g],[f,g,x],[g,x,x]]\bigl\lbrack\bigl\lbrack x, a, b\bigr\rbrack, \bigl\lbrack a, b, c\bigr\rbrack, \bigl\lbrack b, c, d\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack d, k, f\bigr\rbrack, \bigl\lbrack k, f, g\bigr\rbrack, \bigl\lbrack f, g, x\bigr\rbrack, \bigl\lbrack g, x, x\bigr\rbrack\bigr\rbrack

Cyclic padding x,yx, y fills both overhangs, aligned to the list

live ↗
InPartition([a,b,c,d,k,f,g],4,1,[−1,1],[x,y])\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 4, 1, \bigl\lbrack-1, 1\bigr\rbrack, \bigl\lbrack x, y\bigr\rbrack)Out[[y,x,y,a],[x,y,a,b],[y,a,b,c],[a,b,c,d],[b,c,d,k],[c,d,k,f],[d,k,f,g],[k,f,g,y],[f,g,y,x],[g,y,x,y]]\bigl\lbrack\bigl\lbrack y, x, y, a\bigr\rbrack, \bigl\lbrack x, y, a, b\bigr\rbrack, \bigl\lbrack y, a, b, c\bigr\rbrack, \bigl\lbrack a, b, c, d\bigr\rbrack, \bigl\lbrack b, c, d, k\bigr\rbrack, \bigl\lbrack c, d, k, f\bigr\rbrack, \bigl\lbrack d, k, f, g\bigr\rbrack, \bigl\lbrack k, f, g, y\bigr\rbrack, \bigl\lbrack f, g, y, x\bigr\rbrack, \bigl\lbrack g, y, x, y\bigr\rbrack\bigr\rbrack

Offset exceeding the block length skips elements between blocks

live ↗
InPartition([a,b,c,d,k,f,g,h],2,3)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g, h\bigr\rbrack, 2, 3)Out[[a,b],[d,k],[g,h]]\bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack d, k\bigr\rbrack, \bigl\lbrack g, h\bigr\rbrack\bigr\rbrack

Wide limits pad whole blocks beyond either end of the list

live ↗
InPartition([a,b,c,d,k,f,g],3,3,[5,−5],x)\mathrm{Partition}(\bigl\lbrack a, b, c, d, k, f, g\bigr\rbrack, 3, 3, \bigl\lbrack5, -5\bigr\rbrack, x)Out[[x,x,x],[x,a,b],[c,d,k],[f,g,x],[x,x,x]]\bigl\lbrack\bigl\lbrack x, x, x\bigr\rbrack, \bigl\lbrack x, a, b\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack f, g, x\bigr\rbrack, \bigl\lbrack x, x, x\bigr\rbrack\bigr\rbrack
Applications #

Reshaping a list of 9 into a 3×33 \times 3 matrix

live ↗
InPartition([1,2,3,4,5,6,7,8,9],3)\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5, 6, 7, 8, 9\bigr\rbrack, 3)Out[[1,2,3],[4,5,6],[7,8,9]]\bigl\lbrack\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack4, 5, 6\bigr\rbrack, \bigl\lbrack7, 8, 9\bigr\rbrack\bigr\rbrack
Possible issues #

{1..5}\{1..5\} partitioned by 2 drops the ragged remainder {5}\{5\}

live ↗
InPartition([1,2,3,4,5],2)\mathrm{Partition}(\bigl\lbrack1, 2, 3, 4, 5\bigr\rbrack, 2)Out[[1,2],[3,4]]\bigl\lbrack\bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack3, 4\bigr\rbrack\bigr\rbrack
About
Examples40
Checked againstWolfram Language 40 agree
CrosswalkWikipediaMathWorldWikidataBritannicaWolfram Language

See also: Flatten, UpTo