Python list vs tuple vs set | Mutability, Performance, and How to Choose
이 글의 핵심
list vs tuple vs set: mutability, ordering, membership speed, and memory trade-offs.
Introduction
“Isn’t list enough?” This guide compares list, tuple, and set so you can pick the right structure.
What you will learn
- Mutability and ordering
- Typical time costs
- Memory trade-offs
- A simple decision flow
Table of contents
- Quick comparison
- Mutability
- Performance
- Memory
- How to choose
- Common mistakes
- Advanced notes
- Closing thoughts
1. Quick comparison
| list | tuple | set | |
|---|---|---|---|
| Mutable | Yes | No | Yes |
| Order | Yes | Yes | Not for logic (CPython preserves insertion order) |
| Duplicates | Allowed | Allowed | Unique |
| Index | O(1) | O(1) | No indexing |
| Membership | O(n) | O(n) | O(1) avg |
| Append/add | amortized O(1) | — | O(1) avg |
| Memory | Moderate | Lower | Higher (hash table) |
2. Mutability
lst = [1, 2, 3]
lst.append(4)
tup = (1, 2, 3)
# tup[0] = 10 # TypeError
s = {1, 2, 3}
s.add(4)
# s[0] # TypeError — not subscriptable
3. Performance
Membership:
n = 100000
lst = list(range(n))
s = set(range(n))
# 99999 in lst # O(n)
# 99999 in s # O(1) average — much faster at scale
4. Memory
import sys
data = range(10000)
lst = list(data)
tup = tuple(data)
s = set(data)
# sys.getsizeof: tuple often < list << set for same elements
5. How to choose
graph TD
A[Pick a structure] --> B{Order matters?}
B -->|Yes| C{Need in-place edits?}
B -->|No| D[set]
C -->|Yes| E[list]
C -->|No| F{Need as dict key?}
F -->|Yes| G[tuple]
F -->|No| H{Need fastest membership?}
H -->|Yes| G
H -->|No| E
Examples:
- General ordered collection → list
- Fixed point/color/config → tuple
- Dedup / fast membership → set
- Dict keys → tuple (immutable) not list
6. Common mistakes
- Indexing a set
- Mutating a tuple in place (use new tuple)
- Using list as dict key
7. Advanced
- Set algebra:
|,&,-,^ namedtuplefor readable tuples
Closing thoughts
- Order + mutation → list
- Order + immutable → tuple
- Uniqueness / fast contains → set
- Measure if unsure
Match structures to operations and your invariants.
Related posts
- Python data structures
- Python performance
- Python collections
Keywords
Python, list, tuple, set, data structures, time complexity, memory, comparison