September 7, 2026
List vs. Tuple in Python: When Immutability Actually Matters
Lists and tuples both store an ordered collection of values, and their syntax is nearly interchangeable at a glance — square brackets versus parentheses. The real difference is one word: mutability.
tags = ["python", "tutorial"]
tags.append("beginner")
print(tags)
colors = ("red", "green", "blue")
print(colors.count("red"))['python', 'tutorial', 'beginner'] 1
When to reach for a list
Use a list whenever the collection's contents genuinely need to change after creation — items get added, removed, sorted, or replaced over the program's lifetime. tags.append("beginner") above is exactly that: an ongoing collection being built up.
When to reach for a tuple
Use a tuple when a value is meant to be fixed once created — coordinates, RGB colors, a function returning multiple fixed results, or any collection you want a guarantee won't accidentally get mutated somewhere else in your code. colors.count("red") above works exactly like a list's method (tuples aren't limited to just storage), but colors itself can never be changed item by item.
The practical rule
If you catch yourself writing a tuple and then wishing you could .append() to it, that's a sign it should have been a list from the start. If you catch yourself worried that some other part of your code might accidentally change a list you didn't intend to be changed, that's a sign it should have been a tuple.
For a closer look at both data structures side by side, see the Lists and Tuples lessons in our free Python course.