Indexing and Slicing#
After building or loading an array (lists, tuples) in Python, a common task is to access individual elements of these arrays or to crop out parts of them.
Indexing#
Let’s start with a list of numbers
data = [34, 0, 65, 23, 51, 9, 50, 78, 34, 100]
We can determine how many elements are in data
:
len(data)
10
As shown earlier, we can access specific elements by passing an index. Counting the element-index starts at 0.
data[0]
34
data[1]
0
We can also pass negative indices. This will access elements from the end of the list. The last element has index -1.
data[-1]
100
data[-2]
34
Slicing: selecting ranges in lists#
We can also generate a new list that contains the first three elements. Therefore, we pass a range in form [start:end]
. The first element has index start
and the last element of the new list will be just before end
.
data
[34, 0, 65, 23, 51, 9, 50, 78, 34, 100]
data[0:2]
[34, 0]
data[0:3]
[34, 0, 65]
data[1:2]
[0]
Furthermore, we don’t have to specify either start
or end
if we want to select all entries in a list from the start or until the end.
data
[34, 0, 65, 23, 51, 9, 50, 78, 34, 100]
data[:2]
[34, 0]
data[:3]
[34, 0, 65]
data[2:]
[65, 23, 51, 9, 50, 78, 34, 100]
data[3:]
[23, 51, 9, 50, 78, 34, 100]
This also works with negative indices
data[-2:]
[34, 100]
Slicing: stepping over entries in lists#
The :
can also be used to provide a step length using the syntax [start:end:step]
.
data
[34, 0, 65, 23, 51, 9, 50, 78, 34, 100]
For example we can select every seceond element starting at the first:
data[0:10:2]
[34, 65, 51, 50, 34]
data[::2]
[34, 65, 51, 50, 34]
We can also start at the second element (index 1):
data[1::2]
[0, 23, 9, 78, 100]
Indexing and Slicing: Tuples#
All the introduced concepts above also work with tuples
immutable_data = tuple(data)
immutable_data
(34, 0, 65, 23, 51, 9, 50, 78, 34, 100)
immutable_data[:5]
(34, 0, 65, 23, 51)
Exercise#
Please select the three numbers 23, 9 and 78 from data
using a single python command similar to the commands shown above.
data = [34, 0, 65, 23, 51, 9, 50, 78, 34, 100]