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:
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
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:
[1, 2, 3, 4, 5]
As you can see, this resolved the issue.
Solution 2
In case you are using any interactive python session, use this.
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.
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.
list1 = ['India','China','Bhutan','Nepal'] print(list1(2))
Output:
That’s all about TypeError: ‘list’ object is not callable in Python.