   # Reverse a Python list by negative step slicing

A Python list can be reverses by `reverse()`.

``````a = ['Book', 'Note', 'Pen']

a.reverse()

print(a)  # ['Pen', 'Note', 'Book']
``````

## Slicing syntax

The Python slicing syntax (with a negative step) can be used to reverse a list.

``````a = [1, 2, 3, 4, 5]

b = a[::-1]

print(a)  # [1, 2, 3, 4, 5]
print(b)  # [5, 4, 3, 2, 1]
``````

Format
a[start:stop:step]

The `start`, `stop`, `step` options can be omitted. In the example, the start and stop are omitted and the step is -1. The `a` doesn't change and slicing returns a new reversed list.

Note that a tuple and range can be reversed in the same way.

``````t1 = (1, 2, 3)
t2 = t1[::-1]

print(t2)  # (3, 2, 1)

r1 = range(6)
r2 = r1[::-1]

for i in r2:
print(i)

# 5
# 4
# 3
# 2
# 1
# 0
``````

A NumPy array can be also reversed by slicing.

``````import numpy

a = numpy.array([1, 2, 3, 4])
b = a[::-1]

print(a)  # [1 2 3 4]
print(b)  # [4 3 2 1]
``````

## The reverse() returns None

``````a = [1, 2, 3]
b = a.reverse()

print(b)  # None
``````

## In case of an empty list

An empty list is reversed to itself.

``````a = []

a.reverse()

print(a)  # []
``````

## Note: The id doesn't change by reversing

The object id doesn't change after being reversed.

``````a = [1, 2, 3, 4, 5]
print(id(a))  # 4490770176

a.reverse()
print(id(a))  # 4490770176
``````