Table of Contents
In this post, we will see how to resolve TypeError: ‘list’ object is not callable in python.
Let’s first understand why we get this error.
In python, a built-in name
is a name in which the python interpreter assigns predefined value. The value can be objects, functions or classes. All these built-in names will be available irrespective of the scope.
Please note that Python won’t stop you from reassigning these built-in names. Built-in names are not reserved and you can use them in your program as variable names as well.
set = {}
print(“Empty dict with variable name:”,set)
Output:
Empty dict with variable name: {}
As you can see, we are able to create a variable name set
and assign an empty dictionary to it.
So this is a very common error and you should avoid overriding any built-in names such as list, set or dict etc.PEP8 provides recommendations on naming a variable.
Let’s see this with help of example:
1 2 3 4 5 6 7 8 9 |
list = [1,2,2,3,4,2,1,1,4] print(list) set1={ 1,2,2,2,3,3,4,2,1,2,5,3} #converting a set into list using list function print(list(set1)) |
Output:
File “main.py”, line 7, in
print(list(set1))
TypeError: ‘list’ object is not callable
As you can see, we have created a variable name list
and assigned list to it. This list
variable has overriding predefined list built-in name, so when we are using list function to convert set to list, it is raising an error.
Solution 1
To solve about the issue, let’s rename list variable to list1
1 2 3 4 5 6 7 8 9 |
list1 = [1,2,2,3,4,2,1,1,4] print(list1) set1={ 1,2,2,2,3,3,4,2,1,2,5,3} #converting a set into list using list function print(list(set1)) |
Output:
As you can see, this resolved the issue.
Solution 2
In case you are using any interactive python session, use this.
1 2 3 |
del list |
If the above solution still did not work for you, there can be one more reason for this issue.
Solution 3
If you are trying to access list index by () rather than [], then you might get this issue as well.
1 2 3 4 |
list1 = ['India','China','Bhutan','Nepal'] print(list1(2)) |
Output:
File “main.py”, line 2, in
print(list1(2))
TypeError: ‘list’ object is not callable
Change list(2) to list[2] and it will work fine.
1 2 3 4 |
list1 = ['India','China','Bhutan','Nepal'] print(list1(2)) |
Output:
That’s all about TypeError: ‘list’ object is not callable in Python.