# Python – Reverse a deque

In this tutorial, we will look at how to reverse a deque (reverse the order of elements in a deque) in Python with the help of some examples.

## `deque` in Python

The `collections` module in Python comes with a `deque` class that you can use to implement a stack or queue data structure in Python. Deques support thread-safe, memory efficient appends and pops from either side of the deque with approximately the same O(1) performance in either direction.

In simple terms, you can think of a `deque` in Python as a list-like data structure but with efficient insertion and removal of items from either end (left and right). This makes them very useful when implementing a stack or queue functionality in Python.

## How to reverse a deque in Python?

The `deque` class comes with a number of built-in functions to help perform common operations (like adding and removing elements).

To reverse the order of elements in a deque in Python, use the deque `reverse()` function. The following is the syntax –

```# reverse deque "queue"
queue.reverse()```

It reverses a deque in-place and does not return any value (returns `None`).

## Time complexity of the deque `reverse()` function

The time complexity to reverse a deque using the deque `reverse()` function is `O(N)` where `N` is the size of the deque.

If you look at the cpython implementation of the `collections` module deque `reverse()` function (at line 922), you’ll find that the algorithm takes a two-pointer approach and swaps the first element with the last element, the second element with the second-last element, and so on to reverse a deque. This comes out to `O(N/2)` time complexity which is the same as `O(N)` time complexity.

## Examples

Let’s now look at some examples of using the above syntax –

### Example 1 – Reverse a non-empty deque

First, let’s create a deque with some elements.

```from collections import deque

# create a deque
queue = deque([1, 2, 3])
# print the deque
print(queue)```

Output:

`deque([1, 2, 3])`

Here, we imported the `deque` class from the `collections` module and created a deque object, `queue` with three elements – 1, 2, and 3.

Now, let’s now reverse the deque created above.

```# reverse the deque
queue.reverse()
# print the deque
print(queue)```

Output:

`deque([3, 2, 1])`

Here, we used the deque `reverse()` function to reverse the order of the elements in the deque `queue`.

### Example 2 – Reverse a non-empty bounded deque

Let’s now create a bounded deque (deque object with a specified `maxlen` which defines the maximum number of values that it can store).

```# create a bounded deque
queue = deque([1, 2, 3], maxlen=4)
# print the deque
print(queue)```

Output:

`deque([1, 2, 3], maxlen=4)`

Here, we created a bounded deque with `maxlen` 4 and three elements inside it. Now, let’s reverse the elements from this deque using the `reverse()` function.

```# reverse the deque
queue.reverse()
# print the deque
print(queue)```

Output:

`deque([3, 2, 1], maxlen=4)`

The elements in the bounded deque are now reversed.

You might also be interested in –

• 