How to Add Tuples to Lists in Python

To add a tuple to a list in Python, call list.append(t). It puts the whole tuple at the end as one item. If you want the tuple’s elements added one by one instead, use list.extend(t):

cart.append(("Desk lamp", 24.00))   # one new item: the tuple
codes.extend(("TX", "FL"))           # two new items: "TX" and "FL"

Every snippet below ran in a Windows Command Prompt on Python 3.12.5, and the outputs are copied from those runs.

In this tutorial, we’ll add tuples to lists in Python with append(), insert(), extend(), +=, unpacking and zip(), plus the one-item tuple mistake I see most often.

Add a tuple to a list with append()

In a shopping cart, each item is a (name, price) tuple. Appending a new pair adds exactly one item:

cart = [("Notebook", 4.99), ("Pens", 7.50)]
lamp = ("Desk lamp", 24.00)

cart.append(lamp)                 # one new item
print("Items in cart:", len(cart))
for name, price in cart:
    print(f"{name:<10} ${price:>6.2f}")

Output:

Items in cart: 3
Notebook   $  4.99
Pens       $  7.50
Desk lamp  $ 24.00
Command Prompt output of Python append() adding a Desk lamp tuple to a list of cart tuples
append() adds the Desk lamp tuple as one item, so the cart holds three (name, price) pairs.

Because each item is still a pair, the loop can unpack name, price directly. That’s tuple unpacking; see how to unpack a tuple in Python for more patterns.

Insert a tuple at a specific position in a list

insert(index, t) places the tuple before the given index; 0 means the front:

cart = [("Notebook", 4.99), ("Pens", 7.50), ("Desk lamp", 24.00)]

cart.insert(0, ("Gift card", 25.00))      # front
cart.insert(2, ("Stapler", 12.25))        # before index 2
for i, (name, price) in enumerate(cart):
    print(i, name, f"${price:.2f}")

Output:

0 Gift card $25.00
1 Notebook $4.99
2 Stapler $12.25
3 Pens $7.50
4 Desk lamp $24.00

Inserting shifts later items right, so it’s slower than append() on long lists. Here are faster ways to add to the beginning of a list.

How do you add the elements of a tuple to a list?

Use extend() or += when you want the values, not the tuple. Here’s the catch: extend() on a single (name, price) tuple spreads it into two loose values, which is rarely what you meant:

cart = [("Notebook", 4.99)]
tape = ("Tape", 3.49)

wrong = cart.copy()
wrong.extend(tape)                 # spreads the tuple's elements
print("extend(tuple):   ", wrong)

right = cart.copy()
right.extend([tape])               # a list holding one tuple
print("extend([tuple]): ", right)

codes = ["NY", "CA"]
codes += ("TX", "FL")              # += takes any iterable
print("+= tuple:        ", codes)

try:
    codes = codes + ("WA",)
except TypeError as err:
    print("TypeError:", err)
print("+ list(tuple):   ", codes + list(("WA",)))

Output:

extend(tuple):    [('Notebook', 4.99), 'Tape', 3.49]
extend([tuple]):  [('Notebook', 4.99), ('Tape', 3.49)]
+= tuple:         ['NY', 'CA', 'TX', 'FL']
TypeError: can only concatenate list (not "tuple") to list
+ list(tuple):    ['NY', 'CA', 'TX', 'FL', 'WA']
Command Prompt output comparing Python extend with a tuple, extend with a list of one tuple, += and the list + tuple TypeError
extend(tuple) spreads Tape and 3.49 into separate items, extend([tuple]) keeps the pair, and list + tuple raises a TypeError.

Wrap the tuple in a list, or just call append(). And += accepts a tuple, but + needs list() first. The full rundown is in Python extend() vs append().

Add multiple tuples to a list at once

Pass extend() a list of tuples to add several at once. If the values sit in two lists, zip() pairs them up:

orders = [("2026-10-05", 129.99)]

new_orders = [("2026-10-06", 54.25), ("2026-10-07", 310.00)]
orders.extend(new_orders)

dates = ["2026-10-08", "2026-10-09"]
totals = [18.75, 92.40]
orders.extend(zip(dates, totals))               # pairs from two lists

for day, total in orders:
    print(day, f"${total:,.2f}")

Output:

2026-10-05 $129.99
2026-10-06 $54.25
2026-10-07 $310.00
2026-10-08 $18.75
2026-10-09 $92.40
Command Prompt output of Python extend() and zip() adding five dated order tuples to a list
The list ends with five (date, total) order tuples for October 2026.

zip() stops at the shorter list. The Python zip() function guide covers strict=True, which raises an error on a length mismatch.

Build a new list from a list and a tuple with unpacking

To leave the original list untouched, unpack both into a new list with *. Drop the star on the tuple to keep it whole:

base = ["Austin", "Denver"]
stops = ("Phoenix", "Seattle")

route = [*base, *stops]           # elements spread out
nested = [*base, stops]           # tuple kept whole
print(route)
print(nested)
print("base unchanged:", base)

Output:

['Austin', 'Denver', 'Phoenix', 'Seattle']
['Austin', 'Denver', ('Phoenix', 'Seattle')]
base unchanged: ['Austin', 'Denver']

To join more than two sequences, see how to concatenate multiple lists in Python.

Going the other way? See appending elements to a tuple or creating a tuple from a list.

Once your list of tuples is built, these come next:

Frequently asked questions

How do I add a tuple to a list in Python?

Call my_list.append(my_tuple); the tuple becomes one item.

What’s the difference between append() and extend() with a tuple?

append() adds the tuple as one item; extend() adds each of its elements separately.

Why does list + tuple raise a TypeError?

+ only joins two lists. Use my_list + list(my_tuple) or +=.

How do I add a tuple at the start of a list?

Use my_list.insert(0, my_tuple).

How do I add several tuples to a list in one step?

Pass a list of tuples to extend(), or zip(list_a, list_b) to build the pairs.

Where are the list methods documented?

See More on Lists in the Python tutorial.