Python Tuple vs List
Table of Contents
In the last lesson, we learned about Python Packing and Unpacking. Now let’s compare tuples with lists and choose the right one for each job.
Let’s Compare Them
We know about lists. We know about tuples. They look similar. They both hold a collection of items. We can loop through them. We can access items by index. We can slice them.
So what is the difference? And when should we use one over the other?
Let’s break it down.
The Main Difference: Mutability
This is the big one.
Lists are mutable. We can change them after we create them. Add items. Remove items. Change items. Sort them.
Tuples are immutable. Once we create a tuple, we cannot change it. No adding. No removing. No changing items.
my_list = [1, 2, 3]my_list[0] = 10 # Works
my_tuple = (1, 2, 3)my_tuple[0] = 10 # Error!That is the fundamental difference. Everything else comes from this.
Syntax
Lists use square brackets.
my_list = [1, 2, 3]Tuples use parentheses.
my_tuple = (1, 2, 3)But let’s remember, parentheses are optional for tuples. The comma is what matters.
my_tuple = 1, 2, 3That is also a tuple. But usually, people use parentheses for clarity.
Methods
Lists have many methods. Append, extend, insert, remove, pop, sort, reverse, copy, clear. All the things we can do because lists are mutable.
Tuples have only two methods: count() and index(). Because we cannot change a tuple, there is no need for methods that modify it.
my_list = [1, 2, 3]my_list.append(4) # Works
my_tuple = (1, 2, 3)my_tuple.append(4) # Error!Performance
Tuples are slightly faster than lists. Because they are simpler. They take less memory. And operations on them are a bit quicker.
But the difference is small. For most programs, we will not notice. Let’s not choose tuples just for speed. Let’s choose them for safety and clarity.
When to Use a List in Python
Use a list when:
- We need to change the collection after creating it.
- We need to add or remove items.
- We need to sort or reverse it.
- The order might change.
- We are collecting data that grows or shrinks.
For example, a to-do list. We add tasks. We remove tasks. We mark them done. That is a list.
todos = ["buy groceries", "call mom"]todos.append("finish project")todos.remove("call mom")When to Use a Tuple in Python
Use a tuple when:
- The data should not change.
- We want to protect the data from accidental modification.
- We need to use the collection as a dictionary key.
- We are returning multiple values from a function.
- The collection represents a fixed structure, like a point or a record.
For example, coordinates. A point in 2D space is a fixed pair of numbers. It does not change. So a tuple is perfect.
point = (10, 20)Or days of the week. They do not change.
days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")Or RGB colors.
red = (255, 0, 0)Tuples as Dictionary Keys in Python
Lists cannot be dictionary keys. Tuples can. Because dictionary keys must be immutable.
my_dict = {}my_dict[(1, 2)] = "point A" # Worksmy_dict[[1, 2]] = "point B" # Error!That is a practical reason to use tuples.
Returning Multiple Values
Functions often return multiple values as a tuple. Because it is a fixed collection. And it can be unpacked easily.
def get_min_max(numbers): return min(numbers), max(numbers)
low, high = get_min_max([4, 2, 9, 1, 7])That is a common pattern.
Python Tuple vs List: A Real-Life Example
Let’s say we are building an address book. Each contact has a name, phone, and email. That might change over time. So we use a list or a dictionary.
But if we have a fixed set of options, like months of the year, we use a tuple.
months = ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")That is fixed. It will not change. So a tuple is appropriate.
Converting Between Tuples and Lists in Python
We can convert a list to a tuple and vice versa.
my_list = [1, 2, 3]my_tuple = tuple(my_list)print(my_tuple) # (1, 2, 3)
my_tuple = (1, 2, 3)my_list = list(my_tuple)print(my_list) # [1, 2, 3]That is useful when we need to change something temporarily.
Common Mistakes with Python Tuples and Lists
Mistake 1: Using a Tuple When We Need to Change It
colors = ("red", "green", "blue")colors.append("yellow") # Error!So what do we do? We use a list.
colors = ["red", "green", "blue"]colors.append("yellow")Mistake 2: Using a List When We Need a Dictionary Key
my_dict = {}my_dict[[1, 2]] = "value" # Error!So what do we do? We use a tuple.
my_dict[(1, 2)] = "value"Mistake 3: Forgetting the Comma for Single-Item Tuple
single = (5)print(type(single)) # <class 'int'>So what do we do? We add the comma.
single = (5,)Mistake 4: Thinking Tuples Are Always Better Because They Are Immutable
Immutability is good for safety. But if we need to change things, a list is better. Let’s not force a tuple when a list is more appropriate.
Python Tuple vs List: Summary
| Feature | List | Tuple |
|---|---|---|
| Syntax | [1, 2, 3] | (1, 2, 3) |
| Mutable | Yes | No |
| Methods | Many | Only count, index |
| Speed | Slower | Faster |
| Memory | More | Less |
| Dictionary key | No | Yes |
| Use case | Changing data | Fixed data |
Next, we will learn about Python Sets and store unique values without a fixed order.