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

Xóa phần tử trong phạm vi chỉ mục trong Python


Xóa một phần tử đơn lẻ từ Python list là trực tiếp bằng cách dùng chỉ mục của phần tử và hàm del. Nhưng có thể có tình huống cần xóa phần tử cho một nhóm chỉ mục. Bài viết này khám phá các cách xóa chỉ những phần tử từ danh sách được chỉ định trong danh sách chỉ mục.

Sử dụng sort và del

Trong cách này, ta tạo danh sách chứa các giá trị chỉ mục nơi xóa cần xảy ra. Sau đó sắp xếp và đảo ngược chúng để bảo toàn thứ tự gốc của các phần tử danh sách. Cuối cùng áp dụng hàm del cho danh sách cho trước tại các điểm chỉ mục cụ thể đó.

Ví dụ

Alist = [11,6, 8, 3, 2] # Danh sách chỉ mục idx_list = [1, 3, 0] # in danh sách gốc print("Danh sách cho trước là : ", Alist) # in danh sách chỉ mục print("Danh sách chỉ mục là : ", idx_list) # Sử dụng del và sorted() for i in sorted(idx_list, reverse=True): del Alist[i] # In kết quả print("Danh sách sau khi xóa phần tử : " ,Alist)

Kết quả

Chạy mã trên cho kết quả sau −

Danh sách cho trước là : [11, 6, 8, 3, 2] Danh sách chỉ mục là : [1, 3, 0] Danh sách sau khi xóa phần tử : [8, 2]

idx_list sau sắp xếp và reverse thành [0,1,3]. Vì vậy, chỉ các phần tử từ các vị trí này bị xóa.

Sử dụng enumerate và not in

Ta cũng có thể tiếp cận chương trình trên bằng cách dùng enumerate và mệnh đề not in bên trong vòng lặp for. Kết quả giống như trên.

Ví dụ

Alist = [11,6, 8, 3, 2] # Danh sách chỉ mục idx_list = [1, 3, 0] # in danh sách gốc print("Danh sách cho trước là : ", Alist) # in danh sách chỉ mục print("Danh sách chỉ mục là : ", idx_list) # Sử dụng slicing và not in Alist[:] = [ j for i, j in enumerate(Alist) if i not in idx_list ] # In kết quả print("Danh sách sau khi xóa phần tử : " ,Alist)

Kết quả

Chạy mã trên cho kết quả sau −

Danh sách cho trước là : [11, 6, 8, 3, 2] Danh sách chỉ mục là : [1, 3, 0] Danh sách sau khi xóa phần tử : [8, 2]