Удаление элементов из списка в Python — это очень частое действие, которое можно выполнить различными способами. В этом статье мы рассмотрим различные подходы к удалению элементов из списка, как по их позиции, так и по значению, включая использование методов .pop(), del и .remove().
Метод .remove() позволяет удалить первое вхождение указанного значения, тогда как .pop() может удалить элемент по его индексу и вернуть его. Оператор del предоставляет ещё один вариант удаления элементов по индексу, и его также можно использовать для удаления элементов по срезам списка. Выбор подходящего подхода зависит от конкретной задачи.
Чтобы понять всё из этой статьи, следует быть знакомым с основными работы со списками в Python, а именно их созданием, добавлением в них элементов и доступом к элементам по индексу.
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
books.pop(0)
print(books)
# ["Дюна", "Автостопом по галактике", "Война и мир"]
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
read_books = []
read = books.pop(0)
read_books.append(read)
print(read_books)
# ['1984']
print(books)
# ["Дюна", "Автостопом по галактике", "Война и мир"]
books = []
books.pop()
Traceback (most recent call last):
...
IndexError: pop from empty list
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
books.pop(50)
Traceback (most recent call last):
...
IndexError: pop index out of range
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
books.pop(-1)
print(books)
# ["1984", "Дюна", "Автостопом по галактике"]
books = ["1984", "Дюна", "Дюна", "Автостопом по галактике", "Война и мир"]
del books[2]
print(books)
# ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
del books[-1]
print(books)
# ["1984", "Дюна", "Автостопом по галактике"]
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
del books[100]
Traceback (most recent call last):
...
IndexError: list assignment index out of range
del books[]
File "<input>", line 1
del books[]
^
SyntaxError: invalid syntax
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
books.remove("Дюна")
print(books)
# ["1984", "Автостопом по галактике", "Война и мир"]
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
books.remove("Жизнь Пи")
Traceback (most recent call last):
...
ValueError: list.remove(x): x not in list
books.remove()
Traceback (most recent call last):
...
TypeError: list.remove() takes exactly one argument (0 given)
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
del books[0:3]
print(books)
# ['Война и мир']
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
del books[-3:-1]
print(books)
# ['1984', 'Война и мир']
books = ["1984", "Дюна", "Автостопом по галактике", "Война и мир"]
books.clear()
print(books)
# []
phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]
phone_numbers.count("54123")
# 3
phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]
for phone_number in phone_numbers[:]:
while phone_numbers.count(phone_number) > 1:
phone_numbers.remove(phone_number)
print(phone_numbers)
# ['54123', '54456', '54789']
phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]
phone_numbers = list(dict.fromkeys(phone_numbers))
print(phone_numbers)
# ['54123', '54456', '54789']
phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]
unique_phone_numbers = set(phone_numbers)
print(unique_phone_numbers)
# {'54123', '54789', '54456'}
Источник: Real Python