---
title: "Rearranging & Restructuring Lists"
language: "en"
type: "Guide"
summary: "The Wolfram Language encapsulates in a small number of functions vast flexibility in rearranging lists with any structure and any number of elements."
sections: 
  - 
    title: "Sequence-Oriented Operations"
    link: "null"
  - 
    title: "Element-Oriented Operations"
    link: "paclet:guide/ElementsOfLists"
keywords: 
- absent from list
- alphabetic
- alphabetizing of lists
- append to
- appending
- arrange
- array flatten
- ascending order
- Beck parameters
- block matrices
- blocking lists
- blocks
- canonical order
- catenating lists
- census
- changing parts
- circular partitioning
- collapse
- collating of strings
- collation
- combinations
- combining lists
- concatenating lists
- contraction
- cycle
- cyclic partitioning
- decreasing order
- deleting elements
- descending order
- difference of sets
- discard elements
- disjointness
- distinct elements in lists
- dithering
- encoding
- equivalence class counting
- extraction of sublists
- flat list
- flatten at
- flatten matrix
- frequencies
- gather
- gathering elements in lists
- generating tuples
- grade in APL
- handles
- hot spots
- increasing order
- interleave
- join block matrices
- join lists
- knobs
- k-subsets
- left shift
- levels
- list append
- list complement
- lists
- lists ordering
- matrix transpose
- merging lists
- multiple parts
- multiplicities
- neighborhoods
- one-dimensional list
- ordered pairs
- overhangs
- overlap between lists
- padding
- pad left
- pad right
- pairs
- partitioning lists
- parts
- perm
- permutation of indices
- permutations of lists
- permute
- picking out sequences of elements in lists
- powerset
- random permutation
- random sample
- random subset
- ravel in APL
- rearrangements
- remove duplicates
- removing elements from lists
- removing sublists
- reordering of lists
- reorderings
- replace part
- replacements
- reshape in APL
- right shift
- rotate left
- rotate right
- run-length encoding
- run length encoding
- runs of arguments
- sampling without replacement
- segments of lists
- selecting objects with ordering
- sequence of elements
- set exponential
- sets
- sorting of lists
- splicing
- splitting lists
- squash
- stride
- subexpressions
- sublists
- submatrices
- subset permutations
- subtraction of sets
- tally
- transpose of matrices
- transposition of lists
- triples
- unflatten
- union of sets
- uniq
- unique elements in lists
- unravel
- vectors
- wraparound partitioning
canonical_url: "https://reference.wolfram.com/language/guide/RearrangingAndRestructuringLists.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "List Manipulation"
    link: "https://reference.wolfram.com/language/guide/ListManipulation.en.md"
  - 
    title: "Elements of Lists"
    link: "https://reference.wolfram.com/language/guide/ElementsOfLists.en.md"
  - 
    title: "Applying Functions to Lists"
    link: "https://reference.wolfram.com/language/guide/ApplyingFunctionsToLists.en.md"
  - 
    title: "Discrete Mathematics"
    link: "https://reference.wolfram.com/language/guide/DiscreteMathematics.en.md"
  - 
    title: "Sequence Alignment & Comparison"
    link: "https://reference.wolfram.com/language/guide/SequenceAlignmentAndComparison.en.md"
  - 
    title: "Manipulating Structured Datasets"
    link: "https://reference.wolfram.com/language/guide/ComputationWithStructuredDatasets.en.md"
  - 
    title: "Associations"
    link: "https://reference.wolfram.com/language/guide/Associations.en.md"
related_functions: 
  - 
    title: "AlphabeticSort"
    link: "https://reference.wolfram.com/language/ref/AlphabeticSort.en.md"
  - 
    title: "Append"
    link: "https://reference.wolfram.com/language/ref/Append.en.md"
  - 
    title: "AppendTo"
    link: "https://reference.wolfram.com/language/ref/AppendTo.en.md"
  - 
    title: "ArrayFilter"
    link: "https://reference.wolfram.com/language/ref/ArrayFilter.en.md"
  - 
    title: "ArrayFlatten"
    link: "https://reference.wolfram.com/language/ref/ArrayFlatten.en.md"
  - 
    title: "ArrayPad"
    link: "https://reference.wolfram.com/language/ref/ArrayPad.en.md"
  - 
    title: "ArrayReduce"
    link: "https://reference.wolfram.com/language/ref/ArrayReduce.en.md"
  - 
    title: "ArrayResample"
    link: "https://reference.wolfram.com/language/ref/ArrayResample.en.md"
  - 
    title: "ArrayReshape"
    link: "https://reference.wolfram.com/language/ref/ArrayReshape.en.md"
  - 
    title: "Catenate"
    link: "https://reference.wolfram.com/language/ref/Catenate.en.md"
  - 
    title: "Complement"
    link: "https://reference.wolfram.com/language/ref/Complement.en.md"
  - 
    title: "DeleteAdjacentDuplicates"
    link: "https://reference.wolfram.com/language/ref/DeleteAdjacentDuplicates.en.md"
  - 
    title: "DeleteDuplicates"
    link: "https://reference.wolfram.com/language/ref/DeleteDuplicates.en.md"
  - 
    title: "DeleteDuplicatesBy"
    link: "https://reference.wolfram.com/language/ref/DeleteDuplicatesBy.en.md"
  - 
    title: "Drop"
    link: "https://reference.wolfram.com/language/ref/Drop.en.md"
  - 
    title: "Flatten"
    link: "https://reference.wolfram.com/language/ref/Flatten.en.md"
  - 
    title: "FlattenAt"
    link: "https://reference.wolfram.com/language/ref/FlattenAt.en.md"
  - 
    title: "Gather"
    link: "https://reference.wolfram.com/language/ref/Gather.en.md"
  - 
    title: "GatherBy"
    link: "https://reference.wolfram.com/language/ref/GatherBy.en.md"
  - 
    title: "Groupings"
    link: "https://reference.wolfram.com/language/ref/Groupings.en.md"
  - 
    title: "Intersection"
    link: "https://reference.wolfram.com/language/ref/Intersection.en.md"
  - 
    title: "Join"
    link: "https://reference.wolfram.com/language/ref/Join.en.md"
  - 
    title: "LexicographicSort"
    link: "https://reference.wolfram.com/language/ref/LexicographicSort.en.md"
  - 
    title: "Nothing"
    link: "https://reference.wolfram.com/language/ref/Nothing.en.md"
  - 
    title: "NumericalSort"
    link: "https://reference.wolfram.com/language/ref/NumericalSort.en.md"
  - 
    title: "PadLeft"
    link: "https://reference.wolfram.com/language/ref/PadLeft.en.md"
  - 
    title: "PadRight"
    link: "https://reference.wolfram.com/language/ref/PadRight.en.md"
  - 
    title: "Partition"
    link: "https://reference.wolfram.com/language/ref/Partition.en.md"
  - 
    title: "Permutations"
    link: "https://reference.wolfram.com/language/ref/Permutations.en.md"
  - 
    title: "RandomSample"
    link: "https://reference.wolfram.com/language/ref/RandomSample.en.md"
  - 
    title: "ReplacePart"
    link: "https://reference.wolfram.com/language/ref/ReplacePart.en.md"
  - 
    title: "Reverse"
    link: "https://reference.wolfram.com/language/ref/Reverse.en.md"
  - 
    title: "ReverseSort"
    link: "https://reference.wolfram.com/language/ref/ReverseSort.en.md"
  - 
    title: "ReverseSortBy"
    link: "https://reference.wolfram.com/language/ref/ReverseSortBy.en.md"
  - 
    title: "Riffle"
    link: "https://reference.wolfram.com/language/ref/Riffle.en.md"
  - 
    title: "RotateLeft"
    link: "https://reference.wolfram.com/language/ref/RotateLeft.en.md"
  - 
    title: "RotateRight"
    link: "https://reference.wolfram.com/language/ref/RotateRight.en.md"
  - 
    title: "SequenceReplace"
    link: "https://reference.wolfram.com/language/ref/SequenceReplace.en.md"
  - 
    title: "SequenceSplit"
    link: "https://reference.wolfram.com/language/ref/SequenceSplit.en.md"
  - 
    title: "Sort"
    link: "https://reference.wolfram.com/language/ref/Sort.en.md"
  - 
    title: "SortBy"
    link: "https://reference.wolfram.com/language/ref/SortBy.en.md"
  - 
    title: "Splice"
    link: "https://reference.wolfram.com/language/ref/Splice.en.md"
  - 
    title: "Split"
    link: "https://reference.wolfram.com/language/ref/Split.en.md"
  - 
    title: "SplitBy"
    link: "https://reference.wolfram.com/language/ref/SplitBy.en.md"
  - 
    title: "Subsequences"
    link: "https://reference.wolfram.com/language/ref/Subsequences.en.md"
  - 
    title: "Subsets"
    link: "https://reference.wolfram.com/language/ref/Subsets.en.md"
  - 
    title: "Take"
    link: "https://reference.wolfram.com/language/ref/Take.en.md"
  - 
    title: "TakeList"
    link: "https://reference.wolfram.com/language/ref/TakeList.en.md"
  - 
    title: "Tally"
    link: "https://reference.wolfram.com/language/ref/Tally.en.md"
  - 
    title: "Transpose"
    link: "https://reference.wolfram.com/language/ref/Transpose.en.md"
  - 
    title: "Tuples"
    link: "https://reference.wolfram.com/language/ref/Tuples.en.md"
  - 
    title: "Union"
    link: "https://reference.wolfram.com/language/ref/Union.en.md"
related_tutorials: 
  - 
    title: "Lists as Sets"
    link: "https://reference.wolfram.com/language/tutorial/Lists.en.md#20366"
  - 
    title: "Rearranging Lists"
    link: "https://reference.wolfram.com/language/tutorial/Lists.en.md#1331"
  - 
    title: "Rearranging Nested Lists"
    link: "https://reference.wolfram.com/language/tutorial/Lists.en.md#7768"
  - 
    title: "Partitioning and Padding Lists"
    link: "https://reference.wolfram.com/language/tutorial/ManipulatingLists.en.md#14460"
  - 
    title: "Grouping and Combining Elements of Lists"
    link: "https://reference.wolfram.com/language/tutorial/Lists.en.md#16859"
  - 
    title: "Ordering in Lists"
    link: "https://reference.wolfram.com/language/tutorial/Lists.en.md#6191"
  - 
    title: "Combining Lists"
    link: "https://reference.wolfram.com/language/tutorial/Lists.en.md#41"
---
# Rearranging & Restructuring Lists

The Wolfram Language encapsulates in a small number of functions vast flexibility in rearranging lists with any structure and any number of elements.

---

[`Flatten`](https://reference.wolfram.com/language/ref/Flatten.en.md) — flatten out any sequence of levels in a nested list

[`Partition`](https://reference.wolfram.com/language/ref/Partition.en.md) — partition lists or nested lists into sublists

[`Join`](https://reference.wolfram.com/language/ref/Join.en.md) — join lists together at any level

[`Catenate`](https://reference.wolfram.com/language/ref/Catenate.en.md) — catenate elements from a list of lists

* [`ArrayFlatten`](https://reference.wolfram.com/language/ref/ArrayFlatten.en.md)
* [`ArrayReshape`](https://reference.wolfram.com/language/ref/ArrayReshape.en.md)
* [`FlattenAt`](https://reference.wolfram.com/language/ref/FlattenAt.en.md)
* [`Splice`](https://reference.wolfram.com/language/ref/Splice.en.md)
* [`Nothing`](https://reference.wolfram.com/language/ref/Nothing.en.md)

[`TakeList`](https://reference.wolfram.com/language/ref/TakeList.en.md) — take a succession of sublists from a list

---

[`Sort`](https://reference.wolfram.com/language/ref/Sort.en.md) — sort lexicographically or with any comparison function

[`ReverseSort`](https://reference.wolfram.com/language/ref/ReverseSort.en.md) — sort reverse lexicographically

[`SortBy`](https://reference.wolfram.com/language/ref/SortBy.en.md) — sort by the values of a function applied to elements

* [`AlphabeticSort`](https://reference.wolfram.com/language/ref/AlphabeticSort.en.md)
* [`NumericalSort`](https://reference.wolfram.com/language/ref/NumericalSort.en.md)
* [`LexicographicSort`](https://reference.wolfram.com/language/ref/LexicographicSort.en.md)
* [`ReverseSortBy`](https://reference.wolfram.com/language/ref/ReverseSortBy.en.md)

[`Reverse`](https://reference.wolfram.com/language/ref/Reverse.en.md) — reverse a list at any level

[`RotateLeft`](https://reference.wolfram.com/language/ref/RotateLeft.en.md), [`RotateRight`](https://reference.wolfram.com/language/ref/RotateRight.en.md) — cyclically rotate lists at any depth

---

[`Transpose`](https://reference.wolfram.com/language/ref/Transpose.en.md) — transpose any collection of levels

[`ArrayReduce`](https://reference.wolfram.com/language/ref/ArrayReduce.en.md) — reduce dimensions of an array by applying a function

---

[`ArrayResample`](https://reference.wolfram.com/language/ref/ArrayResample.en.md) — resample an array to higher or lower resolution

[`ArrayPad`](https://reference.wolfram.com/language/ref/ArrayPad.en.md) — add padding on each side

[`ArrayFilter`](https://reference.wolfram.com/language/ref/ArrayFilter.en.md) — filter an array using local neighborhoods

[`Riffle`](https://reference.wolfram.com/language/ref/Riffle.en.md) — intersperse additional elements

[`PadLeft`](https://reference.wolfram.com/language/ref/PadLeft.en.md), [`PadRight`](https://reference.wolfram.com/language/ref/PadRight.en.md) — pad lists to be a particular length at any depth

---

[`Split`](https://reference.wolfram.com/language/ref/Split.en.md) — split into runs of identical elements

[`Gather`](https://reference.wolfram.com/language/ref/Gather.en.md) — gather sublists of identical elements

[`Union`](https://reference.wolfram.com/language/ref/Union.en.md), [`Tally`](https://reference.wolfram.com/language/ref/Tally.en.md) — enumerate, tally all distinct elements in a list

[`DeleteDuplicates`](https://reference.wolfram.com/language/ref/DeleteDuplicates.en.md) — delete duplicate elements in a list

[`DeleteDuplicatesBy`](https://reference.wolfram.com/language/ref/DeleteDuplicatesBy.en.md) — delete elements for which values of a function are duplicated

[`DeleteAdjacentDuplicates`](https://reference.wolfram.com/language/ref/DeleteAdjacentDuplicates.en.md) — delete duplicates adjacent to one another

[`SplitBy`](https://reference.wolfram.com/language/ref/SplitBy.en.md), [`GatherBy`](https://reference.wolfram.com/language/ref/GatherBy.en.md) — split, gather based on values of a function applied to elements

* [`Tuples`](https://reference.wolfram.com/language/ref/Tuples.en.md)
* [`Subsets`](https://reference.wolfram.com/language/ref/Subsets.en.md)
* [`Subsequences`](https://reference.wolfram.com/language/ref/Subsequences.en.md)
* [`Permutations`](https://reference.wolfram.com/language/ref/Permutations.en.md)
* [`RandomSample`](https://reference.wolfram.com/language/ref/RandomSample.en.md)

[`Groupings`](https://reference.wolfram.com/language/ref/Groupings.en.md) — generate all possible groupings of a list into sublists

---

* [`Union`](https://reference.wolfram.com/language/ref/Union.en.md)
* [`Intersection`](https://reference.wolfram.com/language/ref/Intersection.en.md)
* [`Complement`](https://reference.wolfram.com/language/ref/Complement.en.md)

---

### Sequence-Oriented Operations

[`SequenceSplit`](https://reference.wolfram.com/language/ref/SequenceSplit.en.md) — split a list at sequences matching a pattern

[`SequenceReplace`](https://reference.wolfram.com/language/ref/SequenceReplace.en.md) — replace sequences in a list

### [Element-Oriented Operations](https://reference.wolfram.com/language/guide/ElementsOfLists.en.md)

* [`ReplacePart`](https://reference.wolfram.com/language/ref/ReplacePart.en.md)
* [`Take`](https://reference.wolfram.com/language/ref/Take.en.md)
* [`Drop`](https://reference.wolfram.com/language/ref/Drop.en.md)
* [`Append`](https://reference.wolfram.com/language/ref/Append.en.md)
* [`AppendTo`](https://reference.wolfram.com/language/ref/AppendTo.en.md)

## Tech Notes

* [Lists as Sets](https://reference.wolfram.com/language/tutorial/Lists.en.md#20366)
* [Rearranging Lists](https://reference.wolfram.com/language/tutorial/Lists.en.md#1331)
* [Rearranging Nested Lists](https://reference.wolfram.com/language/tutorial/Lists.en.md#7768)
* [Partitioning and Padding Lists](https://reference.wolfram.com/language/tutorial/ManipulatingLists.en.md#14460)
* [Grouping and Combining Elements of Lists](https://reference.wolfram.com/language/tutorial/Lists.en.md#16859)
* [Ordering in Lists](https://reference.wolfram.com/language/tutorial/Lists.en.md#6191)
* [Combining Lists](https://reference.wolfram.com/language/tutorial/Lists.en.md#41)

## Related Guides

* [List Manipulation](https://reference.wolfram.com/language/guide/ListManipulation.en.md)
* [Elements of Lists](https://reference.wolfram.com/language/guide/ElementsOfLists.en.md)
* [Applying Functions to Lists](https://reference.wolfram.com/language/guide/ApplyingFunctionsToLists.en.md)
* [Discrete Mathematics](https://reference.wolfram.com/language/guide/DiscreteMathematics.en.md)
* [Sequence Alignment & Comparison](https://reference.wolfram.com/language/guide/SequenceAlignmentAndComparison.en.md)
* [Manipulating Structured Datasets](https://reference.wolfram.com/language/guide/ComputationWithStructuredDatasets.en.md)
* [`Associations`](https://reference.wolfram.com/language/guide/Associations.en.md)