Khi cần xóa phần tử khỏi list, Python cung cấp 3 cách với hành vi khác nhau:
| Phương thức | Cú pháp | Trả về | Xóa theo |
|---|---|---|---|
| remove() | list.remove(value) | None | Giá trị (phần tử đầu tiên khớp) |
| del | del list[index] hoặc del list[start:end] | None | Chỉ số (index) hoặc slice |
| pop() | list.pop([index]) | Phần tử bị xóa | Chỉ số (mặc định cuối) |
remove() - Xóa theo giá trị
lst = [10, 20, 30, 40] lst.remove(30) print(lst)
[10, 20, 40]
Nếu giá trị không tồn tại -> ValueError. Chỉ xóa phần tử đầu tiên khớp.
del - Xóa theo chỉ số/slice
lst = [10, 20, 30, 40, 55] del lst[1] # xóa index 1 print(lst) # [10, 30, 40, 55] del lst[1:3] # xóa slice index 1,2 print(lst) # [10, 55]
pop() - Xóa và trả về phần tử
lst = [100, 300, 400, 550]
removed = lst.pop(1) # xóa index 1
print("Removed:", removed)
print(lst)
Removed: 300 [100, 400, 550]
pop() không tham số -> xóa và trả về phần tử cuối (O(1)). pop(0) xóa đầu (O(n) do dịch chuyển).
Tóm tắt khi nào dùng cái nào?
- remove(x): Biết giá trị, không quan tâm vị trí, xóa 1 lần.
- del list[i]: Biết chính xác index, không cần giá trị trả về.
- pop(i): Cần lấy giá trị vừa xóa (ví dụ: stack
pop(), queuepop(0)). - del list[a:b]: Xóa nhiều phần tử liên tiếp.
Lưu ý hiệu năng
- Xóa ở đầu list (
pop(0),del list[0]) chậm O(n) do phải dịch toàn bộ phần tử sau. - Cần xóa nhiều ở đầu -> dùng
collections.deque(O(1) cho cả hai đầu).