← Назад к вопросам

В чем разница между pop и del в списке?

1.0 Junior🔥 111 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между pop и del

Оба метода удаляют элементы из списка, но имеют принципиальные различия в назначении и использовании.

pop — удалить и вернуть элемент

Метод pop() удаляет элемент из списка и возвращает его значение. Это метод списка, который работает как операция на стеке или очереди.

my_list = [10, 20, 30, 40, 50]

# pop() без аргумента удаляет последний элемент
last = my_list.pop()
print(last)      # 50
print(my_list)   # [10, 20, 30, 40]

# pop(index) удаляет элемент по индексу и возвращает его
element = my_list.pop(1)
print(element)   # 20
print(my_list)   # [10, 30, 40]

del — удалить элемент (возврата значения нет)

del — это оператор Python, который удаляет элемент из списка, но не возвращает его значение. Это означает, что вы просто избавляетесь от элемента.

my_list = [10, 20, 30, 40, 50]

# del удаляет последний элемент
del my_list[-1]
print(my_list)   # [10, 20, 30, 40]

# del по индексу
del my_list[1]
print(my_list)   # [10, 30, 40]

# del удаляет срез
my_list = [1, 2, 3, 4, 5]
del my_list[1:3]
print(my_list)   # [1, 4, 5]

Ключевые отличия

Аспектpop()del
Возвращаемое значениеВозвращает удалённый элементНичего не возвращает
ТипМетод спискаОператор Python
СрезыНе поддерживает срезыПоддерживает срезы
Обработка ошибокВызывает IndexError при пустом спискеВызывает IndexError при неверном индексе
ПроизводительностьO(n) в худшем случаеO(n) в худшем случае

Практические примеры

pop для реализации стека (LIFO):

class Stack:
    def __init__(self):
        self.items = []
    
    def push(self, item):
        self.items.append(item)
    
    def pop(self):
        if not self.items:
            return None
        return self.items.pop()  # возвращаем элемент

stack = Stack()
stack.push(1)
stack.push(2)
value = stack.pop()
print(value)  # 2 — используем возвращённое значение

del для удаления ненужных элементов:

# Удаление нескольких элементов подряд
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
del data[2:5]  # удаляем элементы с индексами 2, 3, 4
print(data)    # [1, 2, 6, 7, 8, 9]

# Очистка списка
data = [1, 2, 3]
del data[:]  # удаляем все элементы
print(data)  # []

Обработка исключений

my_list = []

# pop выбросит исключение, если список пуст
try:
    my_list.pop()
except IndexError:
    print("Список пуст!")

# del также выбросит исключение
try:
    del my_list[0]
except IndexError:
    print("Индекс не существует!")

Когда использовать

Используй pop() если:

  • Нужно использовать удалённое значение
  • Реализуешь стек или очередь
  • Нужна гибкость в обработке ошибок

Используй del если:

  • Значение удалённого элемента не нужно
  • Удаляешь срез элементов
  • Нужна максимальная ясность кода

Оба метода изменяют исходный список и требуют O(n) операций переместить оставшиеся элементы, поэтому для больших списков с частыми удалениями из начала лучше использовать collections.deque.