Indexing

3.2. Indexing#

We can access the items of a list using indexing. This means that we can give Python a number, and it will retrieve the item sitting at that location.

Here is the syntax used for indexing:

list[index].

Now unlike us humans who start counting at 1,

Python indexing starts at 0!

This isn’t unique to Python. Many other languages use 0 indexing.

Below we show you the index corresponding to each item in the list months.

# index:    0      1      2      3      4      5      6      7      8       9     10      11
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
print(months[1])
Feb

Since Python starts indexing at 0, months[0] will give us the first month and month[1] will gives us the second month and so on.

We can also use indexing to extract a range of items. We use the square brackets [] as before and we also specify the start index followed by the end index.

list[start:end]

Note:

  • The start index is inclusive

  • The end index is exclusive

Here is an example. We start at month 2 (March) and go up to, but not including, month 7 (August).

# index:    0      1      2      3      4      5      6      7      8       9     10      11
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
print(months[2:7])
['Mar', 'Apr', 'May', 'Jun', 'Jul']

If you omit the start index, you will automatically start at index 0.

# index:    0      1      2      3      4      5      6      7      8       9     10      11
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
print(months[:7])
['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul']

If you omit the end index, you will automatically end at the last item in the list. Here is an example.

# index:    0      1      2      3      4      5      6      7      8       9     10      11
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
print(months[5:])
['Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']

You can also index from the end of the list by using negative indices. Here is an example.

# negative index:
#          -12    -11    -10    -9     -8     -7     -6     -5     -4      -3     -2     -1
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
print(months[-3])
Oct

Note: the last item in the list starts at -1 whereas the first item in the list starts at 0.

3.2.1. Index Errors#

If you try to access an index that does not exist you will get an IndexError. See what happens when you run the following code.

# index:    0      1      2      3      4      5      6      7      8       9     10      11
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
print(months[12])
Traceback (most recent call last):
  File "/home/main.py", line 3, in <module>
      print(months[12])
            ~~~~~~^^^^
  IndexError: list index out of range

This is a common error as often we forget to account for the fact that Python indexing starts at 0.

Question 1

What do you think the output of the following code will be?

days = ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
print(days[3])
Solution

Thur

days[3] will print the fourth item in the list, which is 'Thur'.

Question 2

Consider the following list.

days = ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']

Which would give the following output:

['Tue', 'Wed']
  1. print(days[1:2])
    
  2. print(days[1:3])
    
  3. print(days[:2])
    
  4. print(days[2])
    
  5. print(days[-2])
    
Solution

Solution is locked

Question 3

What do you think the output of the following code will be?

days = ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
print(days[:3])
Solution

Solution is locked

Question 4

What do you think the output of the following code will be?

days = ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
print(days[-4:])
olution

Solution is locked

Question 5

Consider the following list.

days = ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']

Which of the following will correspond to Saturday? Select all that apply.

days = ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
print(days[-4:])
  1. days[-2]
    
  2. days[5:6]
    
  3. days[-2:-1]
    
  4. days[5]
    
Solution

Solution is locked

Code challenge: Item Number

You have been provided with a shopping list.

shopping_list = ['carrots', 'avocado', 'chocolate', 'toothpaste', 'tomatoes']

Write a program that allows the user to check an item at a specified index in the shopping list.

Here are some examples of how your code should run.

Example 1

Enter an index: 0
You need to buy carrots

Example 2

Enter an index: 2
You need to buy chocolate
Solution

Solution is locked

Code challenge: What Month Is It?

You have been given the following list to start with.

months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']

Write a program that asks the user for a month as an integer and then displays the name of the month.

Example 1

Enter a month: 1
January

Example 2

Enter a month: 6
June
Solution

Solution is locked