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
:
.
- TypeError
- '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.
- Forget to put the len() function while looping through the list with the index number
- 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.
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:
- Python List Methods: All you need to Know
- Replace Item in Python List
- Python typeerror: ‘str’ object is not callable Solution
- List Comprehension in Python
- Python List or Array
- How do you remove duplicates from a Python list while preserving order?
- What is a constructor in Python?
- Python List Files in a Directory: A Complete Guide
- How to Play sounds in Python?
- Python typeerror: ‘int’ object is not subscriptable Solution
Leave a Comment on this Post