List và tuple đều dùng để lưu một dãy phần tử, nhưng chúng có khác biệt quan trọng. Hiểu đúng sẽ giúp bạn chọn kiểu phù hợp và viết code an toàn hơn.
List — có thể thay đổi (mutable)
ds = [1, 2, 3]
ds.append(4) # thêm cuối: [1,2,3,4]
ds.insert(0, 0) # chèn đầu
ds.remove(2) # xóa giá trị 2
ds[0] = 99 # sửa phần tử
Tuple — bất biến (immutable)
toa_do = (10, 20)
# toa_do[0] = 5 # LỖI: không sửa được
x, y = toa_do # giải nén (unpacking)
Khi nào dùng cái nào?
- List: khi dữ liệu sẽ thay đổi — thêm, xóa, sửa. Ví dụ: giỏ hàng, danh sách công việc.
- Tuple: khi dữ liệu cố định — tọa độ, cặp giá trị, bản ghi không đổi. Tuple còn nhanh hơn và có thể làm khóa dict.
Thao tác chung
len(ds) # số phần tử
ds[1:3] # slicing
for x in ds: ... # duyệt
3 in ds # kiểm tra tồn tại
sorted(ds) # sắp xếp (trả list mới)
Mẹo unpacking
dau, *giua, cuoi = [1, 2, 3, 4, 5]
# dau=1, giua=[2,3,4], cuoi=5
Quy tắc đơn giản: dữ liệu cần thay đổi thì dùng list, dữ liệu cố định thì dùng tuple để code an toàn và ý nghĩa rõ ràng hơn.
