Add an Item to a List in Python: append, extend, insert
In Python, you can add a single item (element) to a list using append() and insert(). You can combine lists using extend(), +, +=, and slicing.
For details on removing an item from a list, refer to the following article:
Add an item to a list: append()
The append() method adds a single item to the end of a list. To add an item at a specific position, such as the beginning, use the insert() method (explained below).
l = [0, 1, 2]
l.append(100)
print(l)
# [0, 1, 2, 100]
l.append('abc')
print(l)
# [0, 1, 2, 100, 'abc']
If a list is passed to append(), it is added as a single element, not merged with the existing list.
l.append([3, 4, 5])
print(l)
# [0, 1, 2, 100, 'abc', [3, 4, 5]]
Combine lists: extend(), +, +=
The extend() method appends all items from another iterable, such as a list or tuple, to the end of the list.
l = [0, 1, 2]
l.extend([10, 11, 12])
print(l)
# [0, 1, 2, 10, 11, 12]
l.extend((100, 101, 102))
print(l)
# [0, 1, 2, 10, 11, 12, 100, 101, 102]
Note that when using a string (str) with extend(), each character in the string is added as a separate element.
l.extend('abc')
print(l)
# [0, 1, 2, 10, 11, 12, 100, 101, 102, 'a', 'b', 'c']
Lists can also be combined using the + and += operators.
The + operator returns a new list by concatenating two lists, while += modifies the original list in place by appending items from the other.
l_new = l + [3, 4, 5]
print(l_new)
# [0, 1, 2, 10, 11, 12, 100, 101, 102, 'a', 'b', 'c', 3, 4, 5]
l += [3, 4, 5]
print(l)
# [0, 1, 2, 10, 11, 12, 100, 101, 102, 'a', 'b', 'c', 3, 4, 5]
Add an item at a specific position: insert()
The insert() method places an item at a specified index within the list.
The first argument is the index, and the second is the item to insert. Indexing starts at 0; negative values like -1 count from the end.
l = ['a', 'b', 'c']
l.insert(1, 100)
print(l)
# ['a', 100, 'b', 'c']
l.insert(0, 200)
print(l)
# [200, 'a', 100, 'b', 'c']
l.insert(-1, 300)
print(l)
# [200, 'a', 100, 'b', 300, 'c']
l.insert(-2, 400)
print(l)
# [200, 'a', 100, 'b', 400, 300, 'c']
As with append(), passing a list to insert() adds it as a single element, rather than combining its contents with the target list.
l.insert(0, [-1, -2, -3])
print(l)
# [[-1, -2, -3], 200, 'a', 100, 'b', 400, 300, 'c']
Keep in mind that insert() has O(n) time complexity, which may be inefficient for large lists. Refer to the official Python wiki for the computational complexity of various list operations:
To efficiently add an item to the beginning of a list, consider using deque from the collections module, which supports O(1) insertion at both ends. This is particularly useful when implementing a queue (FIFO).
Insert a list into another list: slicing
Slicing can be used to insert a list or tuple into another list.
By assigning a list or tuple to a slice, its items are inserted into the specified range.
l = ['a', 'b', 'c']
l[1:1] = [100, 200, 300]
print(l)
# ['a', 100, 200, 300, 'b', 'c']
This technique can also replace items in the original list with those from the new sequence.
l = ['a', 'b', 'c']
l[1:2] = [100, 200, 300]
print(l)
# ['a', 100, 200, 300, 'c']
For more details on slicing, refer to the following article: