Computer >> Máy Tính >  >> Lập trình >> Python

Xóa các phần tử trong phạm vi bằng Python

Việc xóa một phần tử duy nhất khỏi python được thực hiện ngay bằng cách sử dụng chỉ mục của phần tử và hàm del. Nhưng có thể có các trường hợp khi chúng ta cần xóa các phần tử cho một nhóm chỉ số. Bài viết này khám phá các cách tiếp cận để chỉ xóa những phần tử tạo thành danh sách được chỉ định trong danh sách chỉ mục.

Sử dụng sắp xếp và xóa

Trong cách tiếp cận này, chúng tôi tạo một danh sách chứa các giá trị chỉ mục mà việc xóa phải xảy ra. Chúng tôi sắp xếp và đảo ngược chúng để bảo toàn thứ tự ban đầu của các phần tử trong danh sách. Cuối cùng, chúng tôi áp dụng hàm del cho danh sách đã cho ban đầu cho các điểm chỉ mục cụ thể đó.

Ví dụ

Alist = [11,6, 8, 3, 2]

# The indices list
idx_list = [1, 3, 0]

# printing the original list
print("Given list is : ", Alist)

# printing the indices list
print("The indices list is : ", idx_list)

# Use del and sorted()
for i in sorted(idx_list, reverse=True):
del Alist[i]

# Print result
print("List after deleted elements : " ,Alist)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given list is : [11, 6, 8, 3, 2]
The indices list is : [1, 3, 0]
List after deleted elements : [8, 2]

idx_list sau khi sắp xếp và đảo ngược trở thành [0,1,3]. Vì vậy, chỉ các phần tử từ các vị trí này mới bị xóa.

Sử dụng liệt kê và không sử dụng

Chúng ta cũng có thể tiếp cận chương trình trên bằng cách sử dụng mệnh đề liệt kê và mệnh đề not in bên trong vòng lặp for. Kết quả tương tự như trên.

Ví dụ

Alist = [11,6, 8, 3, 2]

# The indices list
idx_list = [1, 3, 0]

# printing the original list
print("Given list is : ", Alist)

# printing the indices list
print("The indices list is : ", idx_list)

# Use slicing and not in
Alist[:] = [ j for i, j in enumerate(Alist)
if i not in idx_list ]

# Print result
print("List after deleted elements : " ,Alist)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given list is : [11, 6, 8, 3, 2]
The indices list is : [1, 3, 0]
List after deleted elements : [8, 2]