A tuple in Python is a collection that is ordered and immutable, meaning once you create a tuple, its elements cannot be changed, added, or removed. Tuples are often used to store data that should remain constant throughout a program.
Key Features of Tuples
- Ordered: Elements in a tuple maintain their position.
- Immutable: Once created, the elements in a tuple cannot be modified.
- Heterogeneous: Tuples can hold elements of different data types.
- Hashable: Tuples can be used as keys in dictionaries (if they contain only immutable elements).
- Faster: Tuples are faster than lists when dealing with a small, unchanging dataset.
Creating Tuples
You can create a tuple by enclosing items in parentheses ()
or by simply separating items with commas ,
.
# Empty tuple
empty_tuple = ()
# Tuple with integers
tuple1 = (1, 2, 3)
# Tuple with mixed data types
tuple2 = (1, "hello", 3.14, True)
# Tuple without parentheses
tuple3 = 1, 2, 3
# Nested tuple
tuple4 = (1, (2, 3), [4, 5])
# Single-element tuple
single_element_tuple = (1,)
not_a_tuple = (1) # This is just an integer
Accessing Tuple Elements
You can access tuple elements using indexing or negative indexing.
fruits = ("apple", "banana", "cherry")
# Access by index
print(fruits[0]) # Output: apple
# Access by negative index
print(fruits[-1]) # Output: cherry
Tuple Slicing
Like lists, tuples support slicing.
numbers = (10, 20, 30, 40, 50)
# Slicing from index 1 to 3
print(numbers[1:4]) # Output: (20, 30, 40)
# Slicing from the start to index 2
print(numbers[:3]) # Output: (10, 20, 30)
# Slicing with step
print(numbers[::2]) # Output: (10, 30, 50)
Immutability of Tuples
Tuples cannot be changed after creation. Attempts to modify elements will raise an error.
numbers = (10, 20, 30)
# Trying to modify an element
# numbers[1] = 40 # Raises: TypeError: 'tuple' object does not support item assignment
Tuple Operations
Concatenation
You can join two tuples using the +
operator.
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
result = tuple1 + tuple2
print(result) # Output: (1, 2, 3, 4, 5, 6)
Repetition
Repeat a tuple using the *
operator.
numbers = (1, 2, 3)
repeated = numbers * 2
print(repeated) # Output: (1, 2, 3, 1, 2, 3)
Membership Test
Check if an item exists in a tuple using in
or not in
.
fruits = ("apple", "banana", "cherry")
print("apple" in fruits) # Output: True
print("grape" not in fruits) # Output: True
Iterating Through a Tuple
Use a for
loop to iterate over the elements in a tuple.
fruits = ("apple", "banana", "cherry")
for fruit in fruits:
print(fruit)
Tuple Methods
Tuples have only two built-in methods because they are immutable:
Method | Description | Example |
---|---|---|
count() | Returns the number of occurrences of a value | (1, 2, 2, 3).count(2) → 2 |
index() | Returns the first index of a value | ("a", "b", "c").index("b") → 1 |
Tuple Unpacking
You can assign the elements of a tuple to multiple variables using unpacking.
coordinates = (10, 20, 30)
x, y, z = coordinates
print(x) # Output: 10
print(y) # Output: 20
print(z) # Output: 30
Nested Tuples
Tuples can contain other tuples, creating a nested structure.
nested_tuple = ((1, 2), (3, 4), (5, 6))
# Accessing elements in a nested tuple
print(nested_tuple[1]) # Output: (3, 4)
print(nested_tuple[1][0]) # Output: 3
Converting Between Lists and Tuples
You can convert a tuple to a list (and vice versa) to modify its contents.
# Tuple to list
numbers = (1, 2, 3)
numbers_list = list(numbers)
numbers_list.append(4)
numbers = tuple(numbers_list)
print(numbers) # Output: (1, 2, 3, 4)
# List to tuple
fruits = ["apple", "banana", "cherry"]
fruits_tuple = tuple(fruits)
print(fruits_tuple) # Output: ("apple", "banana", "cherry")
When to Use Tuples?
- Use tuples when you have a fixed set of values that shouldn’t change (e.g., days of the week, coordinates).
- Use tuples as keys in dictionaries if you need a compound key.
- Tuples are more memory-efficient and faster than lists, so they are ideal for read-only collections.
Example: Tuple Usage
# Tuple for coordinates
coordinates = (10, 20)
# Tuple for constant data
weekdays = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
# Tuple as dictionary keys
locations = {
(10.123, 20.456): "Park",
(15.678, 25.789): "Mall"
}
print(locations[(10.123, 20.456)]) # Output: Park
Conclusion
Tuples provide a simple and efficient way to store immutable, ordered data. While they are less flexible than lists, their immutability makes them useful for scenarios where data integrity is important.