Как удалить элемент из списка в Python

Python является один из самых востребованных языков программирования на рынке. Этой популярностью язык не в последнюю очередь обязан своему богатому функционалу.

Мы расскажем вам о маленькой частичке этого обширного функционала, а именно — о том, как удалить элемент из списка. Списки – это коллекции, существенно упрощающие жизнь программистам, так что знать приемы работы с ними совершенно необходимо.

Итак, в этой статье мы рассмотрим следующие темы:

  • Зачем нужны списки?
  • Что такое списки?
  • Как удалить элементы из списка, используя:
    • remove()
    • pop()
    • del

Приступим 🙂

Зачем нужны списки?

Бывают ситуации, когда нужно обрабатывать разные типы данных одновременно.

Скажем, вам нужно, чтобы у вас был элемент строкового типа, целое число и число с плавающей точкой в одной коллекции. Дефолтные типы данных в других языках, таких как C и C++, такого не допускают. То есть, если вы определяете массив целочисленного типа, вы можете хранить в нем только целые числа. Если ваш массив имеет строковый тип, то и хранить в нем можно только строки.

Вот здесь у Python есть преимущество. Список позволяет хранить элементы разных типов данных как единую упорядоченную коллекцию!

Теперь, когда вы знаете, насколько важны списки, давайте рассмотрим, что они из себя представляют и как удалять из них элементы.

От редакции Pythonist. По теме типов данных в Python советуем почитать:

Что такое списки?

Списки — это упорядоченные последовательности, которые могут содержать различные типы объектов. Другими словами, список – это упорядоченный и изменяемый набор элементов.

Списки также допускают дублирование членов.

Списки в Python можно сравнить с массивами на других языках программирования. Но есть одно важное отличие. Массивы содержат данные какого-нибудь одного типа, тогда как списки Python могут содержать элементы разных типов. В одном списке могут храниться строки, целые числа, числа с плавающей точкой и т.д.

Списки поддерживают индексацию и срезы, так же, как и строки. Кроме того, списки изменяемы (mutable). Это значит, что они могут быть изменены после создания. В дополнение к этому списки также могут быть вложенными, то есть вы можете включить список в список.

Основная причина, по которой списки являются важным инструментом в Python, заключается в большом разнообразии встроенных функций для работы с ними. Списки также очень полезны для реализации стеков и очередей в Python. Все элементы в списке заключаются в квадратные скобки и разделяются запятыми.

Пример:

myList = ["Bran",11,3.14,33,"Stark",22,33,11]
print(myList)

# OUTPUT: [‘Bran’, 11, 3.14, 33, ‘Stark’, 22, 33, 11]

В этом примере мы определили список под названием myList. Как видите, все элементы заключены в квадратные скобки ([]) и разделены запятыми. Этот список представляет собой упорядоченную последовательность, содержащую элементы разных типов данных.

Под индексом 0 у нас есть строковый элемент ‘Bran’. Под индексом 1 – целое число 11. Число с плавающей точкой 3.14 имеет индекс 2.

Таким образом, в одном списке мы можем хранить элементы разных типов.

Теперь, когда у вас есть четкое представление о том, как можно создавать списки, давайте перейдем к рассмотрению того, как удалять элементы из списков в Python.

Удаление элемента из списка

Удалить элементы из списка можно тремя способами:

  • используя метод remove()
  • при помощи метода pop() для объекта списка
  • при помощи оператора del

Давайте рассмотрим все три варианта подробнее.

Метод remove() в Python

Метод remove() – один из наиболее часто используемых методов списка для удаления элемента из него.

При использовании этого метода нужно указать конкретный элемент, который необходимо удалить.

Обратите внимание: если указанный элемент встречается несколько раз, то из списка будет удалено только его первое вхождение. Мы можем рассматривать этот метод как «удаление по bvtyb элемента». Если конкретный удаляемый элемент не найден, возникает ошибка ValueError.

Рассмотрим следующие примеры:

Пример 1:

myList = ["Bran",11,22,33,"Stark",22,33,11]
myList.remove(22)
myList

# OUTPUT: [‘Bran’, 11, 33, ‘Stark’, 22, 33, 11]

В этом примере мы определяем список под названием myList. Обратите внимание, что, как обсуждалось ранее, мы заключаем наши элементы списка в квадратные скобки. Далее мы используем метод remove() для удаления элемента 22 из myList.

При выводе в консоль списка с помощью print() мы видим, что из myList было удалено первое вхождение элемента 22.

Пример 2:

myList.remove(44)

# OUTPUT:
# Traceback (most recent call last):
#   File “<stdin>”, line 1, in 
# ValueError: list.remove(x): x not in list2

В примере 2 мы используем remove() для удаления элемента 44. Но мы знаем, что список myList не имеет целого числа 44. В результате интерпретатор Python выдает ошибку ValueError.

Однако стоит отметить, что remove() — медленный метод, поскольку он предполагает поиск элемента в списке.

Метод pop() в Python

Метод pop() – еще один широко используемый метод списка. Он удаляет элемент из списка и возвращает его.

Метод remove() и метод pop() работают по-разному. Применяя remove(), в качестве аргумента мы указываем сам элемент, который нужно удалить. А при использовании pop() мы указываем индекс нужного элемента. При этом элемент не только удаляется, но и возвращается. Если конкретный удаляемый элемент не найден, возникает IndexError.

Рассмотрим следующие примеры:

Пример 1:

myList = ["Bran", 11, 22, 33, "Stark", 22, 33, 11]
myList.pop(1)
# Output: 11

print(myList)
# OUTPUT: ['Bran', 22, 33, 'Stark', 22, 33, 11]

В этом примере мы опять определяем список под названием myList. Далее мы используем метод pop(), передавая 1 в качестве аргумента. Эта единичка представляет собой не что иное, как индекс удаляемого элемента (помним, что в Python нумерация начинается с 0).

Как видно из вывода, pop() удаляет элемент и выводит его в консоль. В данном случае элемент с индексом 1 является целым числом 11.

Когда мы выводим список myList после вызова pop(),мы видим, что в списке больше нет целого числа 11, которое ранее было на позиции 1.

Пример 2:

myList.pop(8)

# OUTPUT:
# Traceback (most recent call last):
#    File “<stdin>”, line 1, in 
# IndexError: pop index out of range

В примере 2 мы используем pop() для удаления элемента с индексом 8. Но поскольку на этой позиции нет элемента, интерпретатор Python выдает ошибку IndexError, как показано в выходных данных.

Здесь стоит сказать, что pop() — быстрый метод, поскольку он удаляет элемент по индексу и не производит поиск.

Оператор Python del

Этот оператор похож на метод pop() с одним важным отличием. Оператор del удаляет элемент из списка по индексу, но удаленный элемент не возвращается, как это происходит в методе pop(). По сути, этот оператор принимает индекс удаляемого элемента в качестве аргумента и удаляет элемент по этому индексу. Всё просто?.

Оператор del также поддерживает удаление ряда элементов из списка.

Обратите внимание: этот оператор, как и метод pop(), вызывает ошибку IndexError, когда указанный индекс выходит за пределы допустимого диапазона.

Рассмотрим примеры.

Пример 1:

myList = ["Bran", 11, 22, 33, "Stark", 22, 33, 11]
del myList[2]
myList

# OUTPUT: [‘Bran’, 11, 33, ‘Stark’, 22, 33, 11]

В этом примере мы в который раз определяем список под названием myList. И используем оператор del для удаления элемента с индексом 2. При удалении элемента он не возвращается (не выводится в консоль).

Распечатав myList, мы видим, что целое число 22, которое стояло под индексом 2, удалено.

Пример 2:

del myList[1:4]
myList

# OUTPUT:  [‘Bran’, 22, 33, 11]

В примере 2 мы используем оператор del для удаления диапазона элементов: от индекса 1 до индекса 4 (но не включая 4). Впоследствии, выведя в консоль myList, можно увидеть, что элементы, которые были на позициях 1, 2 и 3, удалены.

Пример 3:

del myList[7]

# OUTPUT:
# Traceback (most recent call last):
# File “”, line 1, in 
# IndexError: list assignment index out of range

В примере 3, когда мы используем оператор del для удаления элемента с индексом 7 (которого не существует), интерпретатор Python выдает ошибку ValueError.

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

Подведем итоги:

  • метод remove() удаляет первое совпадающее с аргументом значение
  • метод pop() удаляет элемент по указанному индексу и возвращает его
  • оператор del просто удаляет элемент по указанному индексу (или диапазону индексов).

Самые популярные вопросы, связанные с удалением элементов из списка

Как удалить определенный элемент из списка в Python?

Метод remove() удаляет первое вхождение элемента, переданного в метод в качестве аргумента. Метод pop() удаляет элемент по заданному индексу, а также возвращает удаленный элемент. Для удаления элемента или диапазона элементов из списка также можно использовать ключевое слово del.

Как удалить первый элемент из списка в Python?

Мы можем сделать это с помощью следующих четырех вариантов:

  • Самый простой подход – использовать метод списка pop([i]), который удаляет и возвращает элемент, присутствующий в указанной позиции в списке.
  • Это еще один подход, при котором метод remove(x) удаляет первый элемент из списка, который соответствует указанному значению.
  • Чтобы удалить первый элемент, мы можем использовать срезы, получив подсписок, содержащий все элементы списка, кроме первого.
  • Используя оператор del, мы можем удалить элемент из списка, используя его индекс. Отличие от метода pop() в том, что он не возвращает удаленный элемент.

Как удалить последний элемент списка в Python?

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

Как удалить несколько элементов из списка в Python?

Для этой цели можно использовать ключевое слово del. С его помощью можно удалить несколько элементов из списка (указав диапазон индексов).

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

Больше 50 задач по Python c решением и дискуссией между подписчиками можно посмотреть тут

Перевод статьи «Python Remove List: How to remove element from Lists».