Чем отличается `remove()` от `pop()` у списка?

  • remove(value): Удаляет первое вхождение указанного value из списка. Если значение не найдено, вызывает исключение ValueError. Возвращает None.
  • pop(index): Удаляет элемент по указанному index из списка и возвращает этот элемент. Если index не указан, удаляет и возвращает последний элемент списка. Если index находится вне границ списка, вызывает исключение IndexError.

Ключевые отличия: remove удаляет по значению, pop - по индексу. pop возвращает удаленный элемент, remove - нет.


Методы remove() и pop() используются для удаления элементов из списка в Python, но делают это разными способами и возвращают разные результаты:

remove(element):

  • Удаляет первое вхождение указанного element из списка.
  • Не возвращает удалённый элемент.
  • Если элемент не найден в списке, возникает исключение ValueError.

Пример:

my_list = [1, 2, 3, 2]
my_list.remove(2)
print(my_list)  # Вывод: [1, 3, 2]

pop(index):

  • Удаляет элемент по указанному index (индексу) из списка.
  • Возвращает удалённый элемент.
  • Если индекс находится за пределами допустимого диапазона (т.е., index < 0 или index >= len(my_list)), возникает исключение IndexError.
  • Если index не указан, то удаляет и возвращает последний элемент списка.

Пример:

my_list = [1, 2, 3]
removed_element = my_list.pop(1)
print(my_list)        # Вывод: [1, 3]
print(removed_element) # Вывод: 2

my_list = [1, 2, 3]
removed_element = my_list.pop() # без аргументов удаляет последний элемент
print(my_list)        # Вывод: [1, 2]
print(removed_element) # Вывод: 3

Ключевые различия:

  • Удаление по: remove() удаляет по значению, а pop() удаляет по индексу.
  • Возвращаемое значение: remove() ничего не возвращает (None), а pop() возвращает удалённый элемент.
  • Исключения: remove() вызывает ValueError, если элемент не найден, а pop() вызывает IndexError, если индекс некорректен.

В общем, используйте remove(), когда знаете, *что* хотите удалить, и pop(), когда знаете, *где* находится элемент, который хотите удалить, или просто хотите удалить и получить последний элемент.

0