Negative slicing in Python lists
Negative slicing in Python lists lets you access elements from the end of the list. It’s a handy way to get a portion of a list without knowing its exact length. In negative slicing, you use negative numbers as indices. The index -1 refers to the last element, -2 to the second to last, and so on. The basic syntax is list[start:stop:step], where start and stop can be negative.
Here are 20 examples of negative slicing with a simple list numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
Basic Negative Slicing
- Get the last element:
numbers[-1]Result:9 - Get the last three elements:
numbers[-3:]Result:[7, 8, 9] - Get all elements except the last one:
numbers[:-1]Result:[0, 1, 2, 3, 4, 5, 6, 7, 8] - Get elements from the third to last to the second to last:
numbers[-3:-1]Result:[7, 8] - Get elements from the fifth to last to the last:
numbers[-5:]Result:[5, 6, 7, 8, 9]
Combining Positive and Negative Indices
- Get elements from index 2 to the second to last:
numbers[2:-1]Result:[2, 3, 4, 5, 6, 7, 8] - Get elements from the third to last to index 8:
numbers[-3:9]Result:[7, 8] - Get elements from index 0 to the fourth to last:
numbers[:-4]Result:[0, 1, 2, 3, 4, 5] - Get elements from the sixth to last to index 7:
numbers[-6:8]Result:[4, 5, 6, 7]
Using Negative Step Values
- Reverse the entire list:
numbers[::-1]Result:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0] - Get the last three elements in reverse order:
numbers[-1:-4:-1]Result:[9, 8, 7] - Reverse the list from the second to last to the third element:
numbers[-2:2:-1]Result:[8, 7, 6, 5, 4, 3] - Get elements from the end, skipping every other one:
numbers[::-2]Result:[9, 7, 5, 3, 1] - Get the first three elements in reverse order using a negative step:
numbers[2::-1]Result:[2, 1, 0] - Reverse the first five elements:
numbers[4::-1]Result:[4, 3, 2, 1, 0]
More Complex Examples
- Get elements from the fourth to last to the end, with a step of 2:
numbers[-4::2]Result:[6, 8] - Slice from the last element to the fifth element in reverse:
numbers[-1:4:-1]Result:[9, 8, 7, 6, 5] - Get the middle part of the list, from the fourth to last to the third element:
numbers[-4:3]Result:[](An empty list, since the start index is after the stop index and the step is positive) - Get every other element in reverse order, starting from the second to last:
numbers[-2::-2]Result:[8, 6, 4, 2, 0] - Get the first three elements by slicing from the fourth to last element in reverse:
numbers[-8:-11:-1]Result:[2, 1, 0]