Xóa các phần tử khỏi danh sách (mảng) trong Python: clear (), pop (), remove (), del

Kinh doanh

Để xóa một phần tử khỏi danh sách (mảng) kiểu danh sách trong Python, hãy sử dụng các phương thức danh sách clear (), pop () và remove (). Bạn cũng có thể chỉ định vị trí và phạm vi của danh sách bằng cách sử dụng chỉ mục hoặc lát cắt và sau đó xóa nó bằng câu lệnh del.

Thông tin sau được cung cấp ở đây.

  • Loại bỏ tất cả các yếu tố:clear()
  • Xóa một phần tử tại vị trí đã chỉ định và nhận giá trị của nó.:pop()
  • Tìm kiếm các phần tử có giá trị được chỉ định và xóa phần tử đầu tiên.:remove()
  • Xóa bằng cách chỉ định vị trí và phạm vi trong lát chỉ mục:del
  • Xóa hàng loạt nhiều phần tử đáp ứng tiêu chí.:danh sách bao gồm chỉ định

Lưu ý rằng danh sách có thể lưu trữ dữ liệu thuộc các kiểu khác nhau và hoàn toàn khác với mảng. Sử dụng mảng (thư viện chuẩn) hoặc NumPy khi bạn muốn xử lý mảng cho các quy trình yêu cầu kích thước bộ nhớ hoặc địa chỉ bộ nhớ hoặc để tính toán số lượng dữ liệu quy mô lớn.

Loại bỏ tất cả các yếu tố:clear()

Trong phương thức danh sách clear (), tất cả các phần tử bị loại bỏ, dẫn đến một danh sách trống.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

Xóa một phần tử tại vị trí đã chỉ định và nhận giá trị của nó.:pop()

Phương thức pop () của danh sách có thể được sử dụng để xóa một phần tử tại một vị trí xác định và lấy giá trị của phần tử đó.

Số đầu tiên (ban đầu) là 0.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(0))
# 0

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(3))
# 4

print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]

Một giá trị âm cũng có thể được sử dụng để chỉ định vị trí từ cuối (cuối cùng). Kết thúc (cuối cùng) là -1.

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

Nếu đối số bị bỏ qua và không có vị trí nào được chỉ định, phần tử ở cuối (cuối cùng) sẽ bị xóa.

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

Việc chỉ định một vị trí không tồn tại sẽ dẫn đến lỗi.

# print(l.pop(100))
# IndexError: pop index out of range

Lưu ý rằng pop (0), loại bỏ phần tử đầu tiên, yêu cầu chi phí sau và không phải là một hoạt động hiệu quả. Xem trang sau trên wiki chính thức để biết độ phức tạp tính toán của các phép toán khác nhau trên danh sách.
O(n)

O(1)Loại deque được cung cấp trong mô-đun bộ sưu tập thư viện tiêu chuẩn như một loại xóa các phần tử ở trên cùng với chi phí này. Ví dụ: nếu bạn muốn coi dữ liệu là hàng đợi (FIFO), thì sử dụng deque sẽ hiệu quả hơn.

Tìm kiếm các phần tử có giá trị được chỉ định và xóa phần tử đầu tiên.:remove()

Phương thức danh sách remove () có thể được sử dụng để tìm kiếm các phần tử có cùng giá trị như được chỉ định và loại bỏ phần tử đầu tiên.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

Nếu danh sách chứa nhiều hơn một phần tử khớp với giá trị đã chỉ định, thì chỉ phần tử đầu tiên sẽ bị xóa.

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

Nếu một giá trị không tồn tại được chỉ định, sẽ xảy ra lỗi.

# l.remove('xxx')
# ValueError: list.remove(x): x not in list

Xóa bằng cách chỉ định vị trí và phạm vi trong lát chỉ mục:del

Bạn cũng có thể sử dụng câu lệnh del để xóa các phần tử khỏi danh sách.

Chỉ định phần tử sẽ bị xóa bởi chỉ mục của nó. Chỉ số đầu tiên (ban đầu) là 0 và chỉ số cuối cùng (cuối cùng) là -1.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]

del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]

Nếu bạn chỉ định một phạm vi với các lát, bạn có thể xóa nhiều phần tử cùng một lúc.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]

l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]

l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]

l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]

Cũng có thể chỉ định toàn bộ phạm vi và xóa tất cả các phần tử.

l = list(range(10))
del l[:]
print(l)
# []

[start:stop:step]Nếu bạn chỉ định phạm vi trong lát theo cách này và chỉ định bước tăng dần, bạn có thể xóa nhiều phần tử nhảy cùng một lúc.

l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]

l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]

Để biết thêm thông tin về cắt lát, hãy xem bài viết sau.

Xóa hàng loạt nhiều phần tử đáp ứng tiêu chí.:danh sách bao gồm chỉ định

Quá trình loại bỏ các phần tử thỏa mãn điều kiện tương đương với quá trình loại bỏ (trích xuất) các phần tử không thỏa mãn điều kiện. Ký hiệu hiểu danh sách được sử dụng cho loại xử lý này.

Dưới đây là một ví dụ về loại bỏ các phần tử lẻ hoặc chẵn (= để lại các phần tử chẵn hoặc lẻ).
%Đây là toán tử còn lại.
i % 2
Đây là phần còn lại của tôi chia cho 2.

Trong ký hiệu hiểu danh sách, một danh sách mới được tạo. Không giống như các phương pháp kiểu danh sách được giới thiệu từ trước đến nay, danh sách ban đầu vẫn không thay đổi.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]

print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]

print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Những ví dụ khác. Có thể có nhiều cách xử lý tùy thuộc vào biểu thức điều kiện.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']

print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']

print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']

Nếu bạn muốn loại bỏ các phần tử trùng lặp, hãy sử dụng kiểu tập hợp.

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']
Copied title and URL