---
title: "Reverse"
language: "en"
type: "Symbol"
summary: "Reverse[expr] reverses the order of the elements in expr. Reverse[expr, n] reverses elements at level n in expr. Reverse[expr, {n1, n2, ...}] reverses elements at levels n1, n2, ... in expr."
keywords: 
- lists
- backwards
- missense
- REVERSE
- reverse
- reverse
- reflect
- flipud
- fliplr
canonical_url: "https://reference.wolfram.com/language/ref/Reverse.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Structural Operations on Expressions"
    link: "https://reference.wolfram.com/language/guide/StructuralOperationsOnExpressions.en.md"
  - 
    title: "Parts of Matrices"
    link: "https://reference.wolfram.com/language/guide/PartsOfMatrices.en.md"
  - 
    title: "Rearranging & Restructuring Lists"
    link: "https://reference.wolfram.com/language/guide/RearrangingAndRestructuringLists.en.md"
  - 
    title: "List Manipulation"
    link: "https://reference.wolfram.com/language/guide/ListManipulation.en.md"
related_functions: 
  - 
    title: "Permutations"
    link: "https://reference.wolfram.com/language/ref/Permutations.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: "StringReverse"
    link: "https://reference.wolfram.com/language/ref/StringReverse.en.md"
  - 
    title: "IntegerReverse"
    link: "https://reference.wolfram.com/language/ref/IntegerReverse.en.md"
  - 
    title: "PalindromeQ"
    link: "https://reference.wolfram.com/language/ref/PalindromeQ.en.md"
  - 
    title: "Transpose"
    link: "https://reference.wolfram.com/language/ref/Transpose.en.md"
  - 
    title: "ImageReflect"
    link: "https://reference.wolfram.com/language/ref/ImageReflect.en.md"
  - 
    title: "ReverseSort"
    link: "https://reference.wolfram.com/language/ref/ReverseSort.en.md"
  - 
    title: "DataReversed"
    link: "https://reference.wolfram.com/language/ref/DataReversed.en.md"
  - 
    title: "ReverseApplied"
    link: "https://reference.wolfram.com/language/ref/ReverseApplied.en.md"
related_tutorials: 
  - 
    title: "Rearranging Lists"
    link: "https://reference.wolfram.com/language/tutorial/Lists.en.md#1331"
---
# Reverse

Reverse[expr] reverses the order of the elements in expr. 

Reverse[expr, n] reverses elements at level n in expr.

Reverse[expr, {n1, n2, …}] reverses elements at levels n1, n2, … in expr.

## Details

* ``Reverse`` works on ``SparseArray`` objects, reversing the elements in the corresponding ordinary array.

* ``Reverse[expr]`` is equivalent to ``Reverse[expr, 1]``.

* For a matrix ``m``, ``Reverse[m]`` reverses the order of the rows, and ``Reverse[m, 2]`` reverses the order of the columns. »

---

## Examples (11)

### Basic Examples (2)

Reverse the elements of a list:

```wl
In[1]:= Reverse[{a, b, c, d}]

Out[1]= {d, c, b, a}
```

---

Reverse an ``Association`` :

```wl
In[1]:= Reverse[<|a -> 1, b -> 2, c -> 2|>]

Out[1]= <|c -> 2, b -> 2, a -> 1|>
```

### Scope (3)

``Reverse`` works with heads other than ``List`` :

```wl
In[1]:= Reverse[f[a, b, c]]

Out[1]= f[c, b, a]
```

---

Reverse the order of sublists, keeping each sublist unchanged:

```wl
In[1]:= Reverse[{{a, b, c}, {d, e, f}}, 1]

Out[1]= {{d, e, f}, {a, b, c}}
```

Reverse the of sublist contents, keeping the order of sublists unchanged:

```wl
In[2]:= Reverse[{{a, b, c}, {d, e, f}}, 2]

Out[2]= {{c, b, a}, {f, e, d}}
```

Reverse both the order of sublists and their contents:

```wl
In[3]:= Reverse[{{a, b, c}, {d, e, f}}, {1, 2}]

Out[3]= {{c, b, a}, {f, e, d}}
```

---

Reverse an ``Association`` on the first and second levels:

```wl
In[1]:= Reverse[<|a :> {1, 2}, b -> {3, 4}, c -> {5, 6}|>, {1, 2}]

Out[1]= <|c -> {6, 5}, b -> {4, 3}, a :> {2, 1}|>
```

### Applications (2)

``Reverse`` operands:

```wl
In[1]:= Reverse[a.b.c.d.e]

Out[1]= e.d.c.b.a
```

---

Turn an array plot upside down:

```wl
In[1]:= ArrayPlot[Reverse[CellularAutomaton[30, {{1}, 0}, 20]]]

Out[1]= [image]
```

### Properties & Relations (4)

``Reverse`` is its own inverse:

```wl
In[1]:= Reverse[Reverse[{a, b, c, d}]]

Out[1]= {a, b, c, d}
```

---

For a matrix ``m``, ``Reverse[m]`` reverses the rows:

```wl
In[1]:=
m = (⁠|   |   |   |
| - | - | - |
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| 7 | 8 | 9 |⁠);

In[2]:= Reverse[m]//MatrixForm

Out[2]//MatrixForm=
(⁠|   |   |   |
| - | - | - |
| 7 | 8 | 9 |
| 4 | 5 | 6 |
| 1 | 2 | 3 |⁠)
```

``Reverse[m, 2]`` reverses the columns:

```wl
In[3]:= Reverse[m, 2]//MatrixForm

Out[3]//MatrixForm=
(⁠|   |   |   |
| - | - | - |
| 3 | 2 | 1 |
| 6 | 5 | 4 |
| 9 | 8 | 7 |⁠)
```

``Reverse[m, {1, 2}]`` reverses both rows and columns:

```wl
In[4]:= Reverse[m, {1, 2}]//MatrixForm

Out[4]//MatrixForm=
(⁠|   |   |   |
| - | - | - |
| 9 | 8 | 7 |
| 6 | 5 | 4 |
| 3 | 2 | 1 |⁠)
```

---

``Reverse[expr, n]`` is equivalent to ``Map[Reverse, expr, {n - 1}]`` :

```wl
In[1]:= Reverse[Array[a, {5, 5, 5}], 3] == Map[Reverse, Array[a, {5, 5, 5}], {2}]

Out[1]= True
```

This is true even for ``n == 1`` :

```wl
In[2]:= Reverse[Array[a, {5, 5, 5}], 1] == Map[Reverse, Array[a, {5, 5, 5}], {0}]

Out[2]= True
```

Since the default level for ``Map`` is ``{1}``, the third argument is unnecessary for ``n == 2`` :

```wl
In[3]:= Reverse[{{a, b, c}, {d, e, f}}, 2] == Map[Reverse, {{a, b, c}, {d, e, f}}]

Out[3]= True
```

---

``Reverse[expr, Range[n]]`` is equivalent to ``Map[Reverse, expr, {0, n - 2}]`` :

```wl
In[1]:= Reverse[Array[a, {5, 5, 5}], Range[3]] == Map[Reverse, Array[a, {5, 5, 5}], {0, 2}]

Out[1]= True
```

## See Also

* [`Permutations`](https://reference.wolfram.com/language/ref/Permutations.en.md)
* [`RotateLeft`](https://reference.wolfram.com/language/ref/RotateLeft.en.md)
* [`RotateRight`](https://reference.wolfram.com/language/ref/RotateRight.en.md)
* [`StringReverse`](https://reference.wolfram.com/language/ref/StringReverse.en.md)
* [`IntegerReverse`](https://reference.wolfram.com/language/ref/IntegerReverse.en.md)
* [`PalindromeQ`](https://reference.wolfram.com/language/ref/PalindromeQ.en.md)
* [`Transpose`](https://reference.wolfram.com/language/ref/Transpose.en.md)
* [`ImageReflect`](https://reference.wolfram.com/language/ref/ImageReflect.en.md)
* [`ReverseSort`](https://reference.wolfram.com/language/ref/ReverseSort.en.md)
* [`DataReversed`](https://reference.wolfram.com/language/ref/DataReversed.en.md)
* [`ReverseApplied`](https://reference.wolfram.com/language/ref/ReverseApplied.en.md)

## Tech Notes

* [Rearranging Lists](https://reference.wolfram.com/language/tutorial/Lists.en.md#1331)

## Related Guides

* [Structural Operations on Expressions](https://reference.wolfram.com/language/guide/StructuralOperationsOnExpressions.en.md)
* [Parts of Matrices](https://reference.wolfram.com/language/guide/PartsOfMatrices.en.md)
* [Rearranging & Restructuring Lists](https://reference.wolfram.com/language/guide/RearrangingAndRestructuringLists.en.md)
* [List Manipulation](https://reference.wolfram.com/language/guide/ListManipulation.en.md)

## Related Links

* [An Elementary Introduction to the Wolfram Language: First Look at Lists](https://www.wolfram.com/language/elementary-introduction/03-first-look-at-lists.html)
* [An Elementary Introduction to the Wolfram Language: Ways to Apply Functions](https://www.wolfram.com/language/elementary-introduction/25-ways-to-apply-functions.html)
* [An Elementary Introduction to the Wolfram Language: Writing Good Code](https://www.wolfram.com/language/elementary-introduction/47-writing-good-code.html)

## History

* Introduced in 1988 (1.0) \| Updated in 2003 (5.0) ▪ [2007 (6.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn60.en.md)