Python
Как удалить элемент из списка в Питоне: remove, pop, del и фильтр
В Питоне список хранит несколько значений в одном месте: имена, числа, товары, задачи, строки из файла. Удалять элементы можно разными способами, и здесь важно не угадывать команду, а понять, что именно вы хотите удалить: значение, позицию или все элементы по условию
Для новичка главное различие такое: remove() удаляет по значению, pop() и del удаляют по индексу, а фильтр через цикл или list comprehension удаляет сразу несколько подходящих элементов
Короткий ответ
Удалить элемент по значению
names = ["Анна", "Динар", "Олег", "Мария"]
names.remove("Олег")
print(names)
Результат
['Анна', 'Динар', 'Мария']
Удалить элемент по индексу
names = ["Анна", "Динар", "Олег", "Мария"]
deleted_name = names.pop(2)
print(deleted_name)
print(names)
Результат
Олег
['Анна', 'Динар', 'Мария']
Удаление по значению через remove
Метод remove() ищет первое совпадение в списке и удаляет его
numbers = [10, 20, 30, 20, 40]
numbers.remove(20)
print(numbers)
Результат
[10, 30, 20, 40]
Обратите внимание: удалился только первый 20. Второй остался, потому что remove() удаляет одно первое найденное значение
Если элемента нет, будет ошибка
numbers = [10, 20, 30]
numbers.remove(99)
Python выдаст ValueError, потому что значения 99 в списке нет
Чтобы удалить безопасно, сначала проверьте наличие элемента
numbers = [10, 20, 30]
if 99 in numbers:
numbers.remove(99)
else:
print("Такого элемента нет")
Удаление по индексу через pop
Метод pop() удаляет элемент по индексу и возвращает удаленное значение. Это удобно, если нужно не только убрать элемент, но и сохранить его
tasks = ["написать код", "проверить", "отправить"]
done_task = tasks.pop(0)
print("Удалили:", done_task)
print("Осталось:", tasks)
Результат
Удалили: написать код
Осталось: ['проверить', 'отправить']
Если вызвать pop() без индекса, он удалит последний элемент
tasks = ["написать код", "проверить", "отправить"]
last_task = tasks.pop()
print(last_task)
print(tasks)
Удаление по индексу через del
del удаляет элемент по индексу, но ничего не возвращает
colors = ["red", "green", "blue"]
del colors[1]
print(colors)
Результат
['red', 'blue']
del удобно использовать, когда удаленное значение вам не нужно. Если нужно сохранить то, что удалили, проще использовать pop()
Как удалить все одинаковые элементы
Если в списке несколько одинаковых значений, remove() уберет только первое. Для удаления всех совпадений проще создать новый список
numbers = [10, 20, 30, 20, 40, 20]
numbers = [number for number in numbers if number != 20]
print(numbers)
Результат
[10, 30, 40]
Такой способ хорошо читается: взять все числа, кроме 20
Как удалить элементы по условию
Допустим, нужно оставить только положительные числа
numbers = [-5, 10, -2, 7, 0, 3]
numbers = [number for number in numbers if number > 0]
print(numbers)
Результат
[10, 7, 3]
Это уже не просто удаление одного элемента, а фильтрация списка. Для практических задач такой способ часто полезнее, чем remove()
Мини-практика
Создайте список покупок ["хлеб", "молоко", "сыр", "чай"]. Удалите "сыр" через remove(), затем удалите первый элемент через pop(0) и выведите список после каждого действия
После этого добавьте в список два одинаковых значения "чай" и удалите все повторы через фильтрацию. Так вы увидите разницу между удалением одного значения и удалением всех совпадений
Частые ошибки
Ошибка первая: путать значение и индекс. remove(2) удаляет значение 2, а pop(2) удаляет элемент с индексом 2
Ошибка вторая: забывать, что индексы начинаются с нуля. Первый элемент имеет индекс 0, второй — 1, третий — 2
Ошибка третья: использовать remove() без проверки и получать ValueError, если элемента нет
Ошибка четвертая: менять список внутри цикла for по этому же списку. Часто проще создать новый отфильтрованный список
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как удалить элемент из списка Python: remove, pop, del и фильтрация
- Как удалить повторяющиеся элементы из списка Python: set, dict.fromkeys и порядок
- Python: с чего начать — путеводитель для новичков
- append в Python: как добавить элемент в список и не поймать None