How to Fix IndexError List Index Out of Range in Python (original) (raw)

Last Updated : 19 Nov, 2024

**IndexError: list index out of range is a common error in Python when working with lists. This error happens when we try to access an index that does not exist in the list. This article will explore the causes of this error, how to fix it and best practices for avoiding it.

**Example:

Python `

a = [1, 2, 3] print(a[3]) # IndexError

`

ERROR!
Traceback (most recent call last):
File "<main.py>", line 2, in
IndexError: list index out of range

Table of Content

Causes of IndexError: List Index Out of Range

This error usually occurs under the following conditions:

1. Accessing an index that exceeds the length of the list

Python `

a = [1, 2, 3] print(a[5]) # IndexError

`

2. Accessing a negative index that doesn’t exist

Python `

a = [1, 2, 3] print(a[-4]) # IndexError

`

3. Iterating over a list incorrectly using loops

Python `

a = [1, 2, 3] for i in range(len(a) + 1): # Incorrect range

# IndexError when i = 3
print(a[i])  

`

How to Fix IndexError

Here’s how we can resolve and avoid this error with examples:

1. Check the List Length Before Accessing

Always verify the length of the list before accessing an index.

Python `

a = [10, 20, 30]

Let suppose we want to access 'idx' index

idx = 2

if len(a) > idx: print(a[idx]) # Safe access else: print("Index out of range")

`

2. Use Negative Indexes Correctly

Negative indexes start from the end of the list. So, make sure that index don’t exceed the list boundaries.

Python `

a = [10, 20, 30]

try: # Valid negative index print(a[-1])

# Invalid negative index
print(a[-4])

except IndexError: print("Negative index is out of range.")

`

Output

30 Negative index is out of range.

3. Iterate Safely in Loops

When iterating over a list make sure that index don’t exceed the list boundaries.

Python `

a = [10, 20, 30]

for i in range(len(a)): print(a[i])

`

4. Use Enumerate for Safe Iteration

Enumerate provides the index and value of a list and this index will never go out of bounds.

Python `

a = [10, 20, 30]

for idx, val in enumerate(a): print(f"Index: {idx}, Value: {val}")

`

Output

Index: 0, Value: 10 Index: 1, Value: 20 Index: 2, Value: 30

5. Use Try-Except to Handle Errors

Using a try-except block we can prevent our program to crash and allows us to handle errors easily.

Python `

a = [10, 20, 30]

Let suppose we want to access 'idx' index

idx = 3

try: print(a[idx]) except IndexError: print("Index is out of range. Please check your list.")

`

Output

Index is out of range. Please check your list.