Python TypeError: 'list' object cannot be interpreted as an integer Solution

Posted in /  

Python TypeError: 'list' object cannot be interpreted as an integer Solution
vinaykhatri

Vinay Khatri
Last updated on February 10, 2025

There are many Python inbuilt functions that accept only integer values as arguments. For instance, the range() function accepts integer values for start, end, and step arguments. Another example is the Python list's pop() method that accepts integer values as an index number. If we accidentally pass a list object to such methods, then Python raises the TypeError: 'list' object cannot be interpreted as an integer error.

This  Python guide provides a detailed view of why this error occurs in a Python program and how to debug it. It also discusses two common example scenarios that demonstrate the error and its solution.

Python Problem TypeError: 'list' object cannot be interpreted as an integer

Built-in functions and methods like range(), pop(), etc. expect integer values as arguments, and if we pass a list object to these functions, we will receive the TypeError: 'list' object cannot be interpreted as an integer Error.

Example

even = range([2, 10, 2])

print(list(even))

Output

TypeError: 'list' object cannot be interpreted as an integer

Like other Python error statements, this error has two parts separated by a colon : .

  1. TypeError
  2. 'list' object cannot be interpreted as an integer

1. TypeError

TypeError is a Python standard Exception type. Python raises this error when we perform an unsupported operation on an invalid data type object. Or if we try to pass a wrong data type object as an argument to a built-in function or method. In the above example range() was expecting integer arguments, and we passed a list. That's why Python raised the error.

2. 'list' object cannot be interpreted as an integer

This is the error message, telling us that the method or function cannot interpret a list object as an integer. This simply means the function or method was expecting an integer value, not a list.

Solution

To solve the above problem, we need to make sure that we are not passing individual integer numbers as arguments, not the complete list.

even = range(2, 10, 2)

print(list(even))

Output

[2, 4, 6, 8]

Common Example Scenario

Now we know why this error occurs in a Python program, let's discuss the two common cases where many Python learners commit mistakes and encounter this error.

  1. Forget to put the len() function while looping through the list with the index number
  2. Try to remove multiple items from a list using pop

Case 1: Forget to put the len() function while looping through the list with the index number

This is the most common mistake that many Python learners commit, and they encounter the TypeError: 'list' object cannot be interpreted as an integer Error. Although using the for loop , we can loop through the list elements. Sometimes we come across situations where we need the list's index numbers to access the individual list element.

To loop over the list with its index number, we use the range() function and pass the total length of the list into the range function. To find the length of the list, we use the len() function. But if we forget to find the length of the list and directly pass the list to the range() function, then we will encounter the 'list' object cannot be interpreted as an integer error.

Example

Let's say we have two list's products and discounts.

products = ["Shoes", " Casual Shirts", "Formal Shirts", "Jackets", "Sweaters"]

discount = ["10%", "40%", "25%", "30%", "21%"]
The products contain the list of products, and the discount contains the discount offer on the corresponding products.
We need to write a script that prints the product and its corresponding discount value.
Error Example
products = ["Shoes", " Casual Shirts", "Formal Shirts", "Jackets", "Sweaters"]
discount = ["10%", "40%", "25%", "30%", "21%"]

for index in range(products): #error
	print(discount[index], "off on", products[index])

Output

Traceback (most recent call last):
  File "main.py", line 5, in 
    for index in range(products):
TypeError: 'list' object cannot be interpreted as an integer

Break the error

In this particular example, we are getting this error because we have passed a list object products to the range() function.

Solution

To solve the error, all we need to do is pass the list length to the range function.

products = ["Shoes", " Casual Shirts", "Formal Shirts", "Jackets", "Sweaters"]
discount = ["10%", "40%", "25%", "30%", "21%"]


for index in range(len(products)): #error
	print(discount[index], "off on", products[index])

Output

10% off on Shoes
40% off on Casual Shirts
25% off on Formal Shirts
30% off on Jackets
21% off on Sweaters

Case 2: Try to remove multiple items from a list using pop

Using the pop() method, we can remove items from a list by specifying the item index number. The pop method can only accept a single integer value as an argument, which means we can only remove one item with one call of the pop() method on a list.

And if we try to pass a list of index numbers to the pop() method thinking that it will pop out that many items, we will receive the TypeError: 'list' object cannot be interpreted as an integer Error.

Example

items  = ["A", "B", "C", "D", "E", "F", "G"]

#remove the item that has 3 and 5 index value
items.pop([3, 5])

print(items)

Output

Traceback (most recent call last):
  File "main.py", line 4, in 
    items.pop([3, 5])
TypeError: 'list' object cannot be interpreted as an integer

Break the output

In this example, we are getting the same error. The pop() method only accepts an integer number, and we have passed a list [3, 5] .

Solution

The pop method can only remove one item at a time, and when we want to remove multiple items, we need to create a for loop that can execute the pop method the desired number of times.

items  = ["A", "B", "C", "D", "E", "F", "G"]

#remove the items that has 3 and 5 index value 
indices = [3, 5]

for index in indices:
	items.pop(index)

print(items)

Output

['A', 'B', 'C', 'E', 'F']

This example is very minimal; still, it lays the basic concept for the reason of error.

Conclusion

The "TypeError: 'list' object cannot be interpreted as an integer" error raises in a Python program when we pass a list object to a built-in function or method that was expecting an integer value as an argument.

To solve this error in your Python program, you need to make sure that you are not passing a list to such functions that are expecting the integer value. You will mostly encounter this error when you pass the complete list to the range() function instead of the individual item or the length of the list.

If you are still getting this error in your Python program, please share your code and query in the comment section. We will try to help you in debugging.

People are also reading:

Leave a Comment on this Post

0 Comments