Python List vs Tuple
Lists and tuples are two types of sequence data structures offered by Python to store the collections of items. Though generally similar, they differ distinctly in some key aspects as mutability, performance, and a number of use cases for each. Here is how to compare them in detail:
1. Mutability
- List: Mutable (can be modified after creation).
- You can add, remove, or change elements in a list.
- Example:
my_list = [1, 2, 3]
my_list[1] = 20 # Modify an element
my_list.append(4) # Add an element
print(my_list) # Output: [1, 20, 3, 4]
- Tuple: Immutable (cannot be modified after creation).
- You cannot add, remove, or change elements in a tuple.
- Example:
my_tuple = (1, 2, 3)
# my_tuple[1] = 20 # Raises TypeError
print(my_tuple) # Output: (1, 2, 3)
2. Syntax
- List: Defined using square brackets
[ ]
. - Example:
my_list = [1, 2, 3]
- Tuple: Defined using parentheses
( )
or just commas. - Example:
my_tuple = (1, 2, 3)
single_element_tuple = (1,) # Comma is necessary for single-element tuple
3. Performance
- List: Slower because it is mutable.
- Lists are optimized for flexibility, which adds overhead.
- Tuple: Faster because it is immutable.
- Tuples are lightweight and use less memory.
4. Use Cases
- List:
- Whenever you need a collection that can change.
- Tasks in which you often add or remove items.
- Example: storing a list of user inputs or tasks.
tasks = ["Buy groceries", "Pay bills"]
tasks.append("Call mom")
print(tasks) # Output: ['Buy groceries', 'Pay bills', 'Call mom']
- Tuple:
- When the collection should not change.
- Useful for representing fixed data, like coordinates, days of the week, or database keys.
- Example: Representing a point in 2D space:
point = (10, 20)
print(point) # Output: (10, 20)
5. Methods
- List: Has more methods because it is mutable.
- Examples:
.append()
,.remove()
,.pop()
,.sort()
.
my_list = [3, 1, 2]
my_list.sort()
print(my_list) # Output: [1, 2, 3]
- Tuple: Limited methods because it is immutable.
- Examples:
.count()
,.index()
.
my_tuple = (1, 2, 2, 3)
print(my_tuple.count(2)) # Output: 2
print(my_tuple.index(3)) # Output: 3
6. Nesting
Both lists and tuples can be nested, meaning you can store lists inside tuples or tuples inside lists.
- Example:
nested_list = [[1, 2], [3, 4]]
nested_tuple = ((1, 2), (3, 4))
7. Hashability
- List: Not hashable (can’t be used as dictionary keys or in sets).
- Tuple: Hashable if it contains a list of hashables elements(can be used as dictionary keys or sets).
- Example:
my_dict = {(1, 2): "point A"}
print(my_dict[(1, 2)]) # Output: point A
Summary of Differences
Feature | List | Tuple |
---|---|---|
Mutability | Mutable | Immutable |
Syntax | [ ] | ( ) or just commas |
Performance | Slower | Faster |
Methods | Many (e.g., .append() ) | Few (e.g., .count() ) |
Use Case | Dynamic data (modifiable) | Static data (fixed) |
Hashable | No | Yes (if elements are hashable) |
When to Use Which?
- Use lists when you have to store a collection of items that may change.
- Use tuples for collections if they do not change or when high-performance and immutability are vital.