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]