Python для новичковКоллекцииСписок: изменение и перебор

Список: изменение и перебор

Уроки курсаСписок: изменение и перебор

Удаление элементов: remove и pop

Удалять элементы из списка можно двумя способами: по значению и по индексу. Под каждый случай — свой метод.

remove() ищет в списке первое вхождение указанного значения и удаляет его.

tasks = ["купить хлеб", "выпить кофе", "позвонить врачу", "выпить кофе"]
tasks.remove("выпить кофе")
print(tasks)
# ['купить хлеб', 'позвонить врачу', 'выпить кофе']

Обратите внимание: удалился только первый «выпить кофе», второй остался. Метод не трогает дубликаты дальше первого совпадения.

Если передать значение, которого в списке нет, Python выбросит ValueError:

tasks = ["купить хлеб", "позвонить врачу"]
tasks.remove("сходить в спортзал")  # ValueError: list.remove(x): x not in list

Чтобы не словить ошибку, перед удалением проверяйте наличие через in:

task_to_remove = "сходить в спортзал"
if task_to_remove in tasks:
    tasks.remove(task_to_remove)
else:
    print("Такой задачи нет в списке")

pop() работает иначе: удаляет элемент по индексу и при этом возвращает его. Это принципиальное отличие от remove() — вы получаете удалённое значение обратно.

tasks = ["купить хлеб", "позвонить врачу", "сделать зарядку"]
done = tasks.pop(1)
print(done)   # позвонить врачу
print(tasks)  # ['купить хлеб', 'сделать зарядку']

Без аргумента pop() удаляет последний элемент — это удобно, когда список используется как стек:

tasks = ["купить хлеб", "позвонить врачу", "сделать зарядку"]
last = tasks.pop()
print(last)   # сделать зарядку
print(tasks)  # ['купить хлеб', 'позвонить врачу']

Если передать индекс, которого не существует, получите IndexError — та же ошибка, что при обращении к несуществующему элементу через квадратные скобки:

tasks = ["купить хлеб"]
tasks.pop(5)  # IndexError: pop index out of range

Вот ключевые различия между двумя методами:

  • remove(value) — удаляет по значению, возвращает None, выбрасывает ValueError если значения нет.
  • pop(i) — удаляет по индексу, возвращает удалённый элемент, выбрасывает IndexError если индекс вне диапазона.

Выбор между ними зависит от задачи: если вы знаете, что именно хотите убрать — remove(), если знаете, где оно стоит или нужен сам удалённый элемент — pop().