← Все вопросы

Как удалить элемент из списка — в чём разница remove, pop и del?

Задан 13 месяцев назад1.3к просмотров3 ответа
21

Запутался в способах удаления. Есть remove(), pop(), есть del. Когда что использовать и чем они вообще отличаются?

3 ответа

33
✓ Принятый ответ — помог автору

Коротко по сути:

  • remove(x) — удаляет первый элемент, равный значению x (по значению, не по индексу). Если такого нет — ValueError.
  • pop(i) — удаляет элемент по индексу i и возвращает его. Без аргумента — последний.
  • del lst[i] — удаляет по индексу, ничего не возвращает, умеет срезы (del lst[1:3]).
a = [10, 20, 30, 20]
a.remove(20)   # [10, 30, 20]  — убрал первое 20
x = a.pop(0)   # x=10, a=[30, 20]
del a[0]       # a=[20]

Правило: знаешь значение — remove, знаешь позицию и нужно значение — pop, знаешь позицию и значение не нужно (или срез) — del.

Шамиль Ausc огонь, наконец разложилось по полкам 🙏 · 12 месяцев назад
Светлана Петровна а если значения нет — remove кидает ошибку, ловите через if x in lst · 12 месяцев назад
11

Ещё нюанс: pop() возвращает удалённый элемент, а remove и del — нет. Поэтому когда надо «достать и убрать» — только pop.

-5

remove по индексу работает

Игорь Попов нет, remove по значению. По индексу — del или pop · 12 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект