Similar to the strings, Python lists also support the concatenation operation between two list objects using the
+
operator. If we perform the + operator between two list objects, list_1 and list_2, it will return a new list object that will be a concatenation of list_1 and list_2.
But if we perform the + operation between a list object and an integer value, we will receive the
TypeError: can only concatenate list (not "int") to list
Error.
In this Python guide, we will talk about this error in detail and learn how to debug it. We will also walk through an example to demonstrate this error and solve the error in the solution section.
Python Error: TypeError: can only concatenate list (not "int") to list
Concatenation is an operation that joins two data objects into one. In Python, we can use the + operator between two strings, tuples, or lists objects, and it will return a new value of the same data type by joining the values of the two objects.
Example
# string concatenation
str_cat = "string1" + "string2"
# list concatenation
list_cat = [1,2,3,4,5] + [6,7,8,9,10]
# tuple concatenation
tuple_cat = (1,2,3,4,5,6) + (7,8,9,10,11)
print(str_cat) #string1string2
print(list_cat) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(tuple_cat) #(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
When we perform a concatenation operation between a list object and integer value, we receive the error
TypeError: can only concatenate list (not "int") to list
. The Error statement can be divided into two parts
- TypeError (Exception Type)
- can only concatenate list (not "int") to list
TypeError
TypeError is one of Python's standard exceptions. It is raised in a Python program when the interpreter finds an unsupported operation on or between two data objects. To perform a list concatenation, both operands must be a list. If any of the operands is of a different data type, we will receive the type error.
can only concatenate list (not "int") to list
can only concatenate list (not "int") to list
is the error message. You will only encounter this error when you put the + operator between a list and an integer number in your Python program. This error message clearly specifies that Python can only concatenate list to list, not int to list.
Example
num = 4
nums = [1,2,3]
# add 4 to the list nums
nums = nums + num
print(nums)
Output
Traceback (most recent call last):
File "main.py", line 7, in
nums = nums + num
TypeError: can only concatenate list (not "int") to list
Solution
The solution of the above example depends on the situation or the logic of the program. The
+
symbol is also used for addition operations between two numbers. By looking at the above program, we can not tell what operation we want to perform.
We might be thinking of adding value 4 to every element of the list
nums
, or we are just appending the value 4 at the end of the list using concatenation. If we want to add an integer number to every element of the list, we need to traverse through every element of the list and add the value.
Example solution 1 (add the integer number to every element of the list)
num = 4
nums = [1,2,3]
# add num to nums
for i in range(len(nums)):
nums[i] += num
print(nums)
Output
[5, 6, 7]
If we want to add a new element to the list object using + or concatenation operation, we should first consider using of python append method. Which is the most used list method to add a new element to the end of the list.
Example Solution 2 (add the integer at the end of the list)
# concatenate list and integer
num = 4
nums = [1,2,3]
# add num to nums
nums.append(num)
print(nums)
Output
[1, 2, 3, 4]
If you do not wish to use the append() method and want to add a new integer number to the list object using concatenation. There you first need to convert the integer object into a list by putting the square bracket around the number, then concatenate that converted list into the existing list.
Example Solution 3 (add the integer at the end of the list)
# concatenate list and integer
num = 4
nums = [1,2,3]
# add num to nums
nums = nums + [num]
print(nums)
Output
[1, 2, 3, 4]
Wrapping Up!
The Python error "TypeError: can only concatenate list (not "int") to list" is raised when the Python interpreter finds the + operation between a list and an int object. Unlike other programming languages, Python does not support the + operation as an addition between list and int. Python list object treats the + operator as a concatenation operator and tries to concatenate the object on the right side of the operator.
If you are still getting this error in your Python program, you can share your code in the comment section. We will try to help you in debugging.
People are also reading:
- Python IndentationError: unindent does not match any outer indentation level Solution
- Recursion in Python
- Python TypeError: Method_Name() missing 1 required positional argument: ‘self’ Solution
- Global Keyword in Python
- Python TypeError: ‘list’ object cannot be interpreted as an integer Solution
- Enumerate in Python
- Python NameError: name ‘self’ is not defined Solution
- A Guide to Flatten List in Python
- Python TypeError: object of type ‘NoneType’ has no len()
- What is CubicWeb in Python?
Leave a Comment on this Post