Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Khác biệt giữa del, remove và pop trên list Python?

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ứcCú phápTrả vềXóa theo
remove()list.remove(value)NoneGiá trị (phần tử đầu tiên khớp)
deldel list[index] hoặc del list[start:end]NoneChỉ số (index) hoặc slice
pop()list.pop([index])Phần tử bị xóaChỉ 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(), queue pop(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).