How to concatenate two Lists in Python

This article shows different ways to concatenate two lists or other iterables in Python.

Use `a + b`

The simplest way is by just using the + operator to combine two lists:

``````a = [1, 2]
b = [3, 4]

c = a + b
# [1, 2, 3, 4]
``````

Use `[*a, *b]`

Another alternative has been introduced in Python 3.5 via the acceptance of PEP 448.

This PEP is titled Additional Unpacking Generalizations and is a more general way to unpack and combine items.

While the + operator only works with two lists, this unpacking technique can be used for other iterables (e.g. tuples or sets), too.

``````c = [*a, *b]
# [1, 2, 3, 4]
``````
``````a = [1, 2]
b = (3, 4)

# c = a + b
# TypeError: can only concatenate list (not "tuple") to list

c = [*a, *b]
# [1, 2, 3, 4]
``````

Careful: Only creates a shallow copy!

Be careful! Both mentioned methods above create only a shallow copy!

This means the copy is one level deep. Modifying on level 1 does not affect the other list. But with nested objects, modifying on level 2 or deeper does affect the other!

In this example we have a nested list. After creating a new list c, we modify an inner item of a. Notice that c now has the same modification, too!

``````# nested lists
a = [[1, 2], [3, 4]]
b = [[5, 6], [7, 8]]

c = a + b
print(c)
# [[1, 2], [3, 4], [5, 6], [7, 8]]

a[0][0] = 99
print(c)
# [[99, 2], [3, 4], [5, 6], [7, 8]]
``````

In-place updates with `list.extend(iterable)`

To update an existing list in-place, and add the items of another list, you can use `list.extend(iterable)`. This also works with any type of iterable.

``````a = [1, 2]
b = [3, 4]  # also works with other iterables

a.extend(b)
# a = [1, 2, 3, 4]
``````

FREE VS Code / PyCharm Extensions I Use

🪁 Code faster with Kite, AI-powered autocomplete: Link *

✅ Write cleaner code with Sourcery, instant refactoring suggestions: Link *

* These are affiliate links. By clicking on it you will not have any additional costs, instead you will support me and my project. Thank you! 🙏