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

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']

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

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:
- Sort a list of tuples in Python
- Iterate through tuples in Python
- Convert a dictionary to a list of tuples
- Work with a list of lists in Python
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.

Bijay Kumar is a 13-time Microsoft MVP with more than 18 years in software development, and the founder of Python Guides and TSinfo Technologies. He started out building .NET and SharePoint solutions at HP, TCS and KPIT before moving into Python, machine learning and AI, and he also builds web apps with TypeScript and React. He writes the tutorials here himself, and every example is run before publishing so you see the real output. More about Bijay · Microsoft MVP profile · LinkedIn