Tuples in Python — Immutable Sequences Guide
What is a Tuple?
A tuple is an ordered, immutable collection. Once created, you cannot change, add, or remove items. Tuples are faster than lists and are used for data that shouldn't change.
Creating Tuples
empty = ()
single = (42,) # trailing comma required for single-item tuple
single2 = 42, # parentheses optional
coords = (10.5, 20.3)
colors = ("red", "green", "blue")
mixed = (1, "hello", 3.14, True)
nested = ((1, 2), (3, 4), (5, 6))
# From other iterables
from_list = tuple([1, 2, 3])
from_str = tuple("abc") # ('a', 'b', 'c')
from_range = tuple(range(5)) # (0, 1, 2, 3, 4)
print(type(coords)) # <class 'tuple'>
print(len(colors)) # 3
Accessing Elements
colors = ("red", "green", "blue", "yellow", "purple")
print(colors[0]) # red
print(colors[-1]) # purple
print(colors[1:3]) # ('green', 'blue')
print(colors[::-1]) # reversed tuple
# Nested tuple access
matrix = ((1, 2, 3), (4, 5, 6))
print(matrix[1][2]) # 6
# Unpacking
x, y, z = (10, 20, 30)
print(x, y, z) # 10 20 30
# Extended unpacking
first, *rest = (1, 2, 3, 4, 5)
print(first) # 1
print(rest) # [2, 3, 4, 5]
*start, last = (1, 2, 3, 4, 5)
print(start) # [1, 2, 3, 4]
print(last) # 5
Tuple Methods
Tuples only have two methods since they're immutable.
| Method | Description |
|---|---|
count(x) | Returns number of times x appears |
index(x) | Returns index of first occurrence of x |
nums = (3, 1, 4, 1, 5, 9, 2, 6, 1)
print(nums.count(1)) # 3
print(nums.index(5)) # 4
# Concatenation and repetition
a = (1, 2, 3)
b = (4, 5, 6)
print(a + b) # (1, 2, 3, 4, 5, 6)
print(a * 3) # (1, 2, 3, 1, 2, 3, 1, 2, 3)
# Membership
print(5 in nums) # True
print(7 not in nums) # True
# Iteration
for color in ("red", "green", "blue"):
print(color)
# Convert to list to modify, then back
t = (1, 2, 3)
lst = list(t)
lst.append(4)
t = tuple(lst)
print(t) # (1, 2, 3, 4)
Tuple vs List - When to Use Which
| Feature | Tuple | List |
|---|---|---|
| Mutability | Immutable | Mutable |
| Syntax | (1, 2, 3) | [1, 2, 3] |
| Performance | Faster | Slower |
| Dict key | Yes | No |
| Use case | Fixed data (coordinates, RGB, DB rows) | Dynamic collections |
# Return multiple values from a function
def min_max(numbers):
return min(numbers), max(numbers)
low, high = min_max([3, 1, 4, 1, 5, 9])
print(low, high) # 1 9
# Tuple as dict key (lists can't be keys)
locations = {
(40.7128, -74.0060): "New York",
(51.5074, -0.1278): "London",
}
print(locations[(40.7128, -74.0060)]) # New York
# Named tuple - readable tuple with field names
from collections import namedtuple
Point = namedtuple("Point", ["x", "y"])
p = Point(3, 4)
print(p.x, p.y) # 3 4
print(p[0], p[1]) # 3 4 (still indexable)
Level Up Your Python Skills
Master Python with these hand-picked resources
10,000+ learners
Free forever
Updated 2026
Related Python Topics