Удаление элемента из списка в Python (pop, remove, del, clear)
В этом уроке вы узнаете, как использовать Python для удаления элемента из списка. Вы узнаете, как делать это с помощью методов pop, remove, del и clear, а также как удалить один или все экземпляры элемента. Также вы узнаете, как условно удалять несколько элементов списка в Python.
Списки в Python - это изменяемые типы данных, что означает, что их можно изменять. Они также индексируемы, что означает, что их порядок имеет значение и что элементы можно получать (и изменять) по их индексной позиции. Умение работать со списками и знать, как удалять элементы, является важным навыком. Например, вы могли бы создавать игру, где необходимо удалять элементы, когда игроки их выбирают.
Python предоставляет различные методы для удаления элементов из списка. Ниже вы найдете краткое описание этих методов и как они удаляют элементы. В следующих разделах вы найдете подробные руководства по работе с этими функциями.
list.pop()
Удаляет элемент по указанному индексу и возвращает его
list.remove()
Удаляет первый элемент, совпадающий со значением
slicing
Можно использовать для удаления несовпадающих диапазонов данных
del
statement
Удаляет элемент по индексу и не возвращает его
list.clear()
Удаляет все элементы в списке Python
Оглавление
Метод Python Remove для удаления элемента списка на основе его значения
Python позволяет легко удалить элемент списка по его значению, используя метод списка remove
. Метод просматривает список на наличие первого вхождения этого значения и удаляет его.
Давайте посмотрим, как мы можем использовать метод списка .remove()
, чтобы удалить элемент из списка:
Мы применили метод remove к нашему списку на месте, что означает, что нам не нужно было переназначать значения.
Что происходит, если мы пытаемся удалить элемент, которого не существует? Давайте посмотрим, что произойдет, если мы запустим следующий код:
Мы можем увидеть, что при попытке использовать метод remove
для удаления элемента, которого не существует, возвращается ValueError
. Если вы не уверены, что значение существует в списке и не хотите, чтобы ваша программа завершалась с ошибкой, вы можете обернуть метод в блок try
Давайте посмотрим, как это можно сделать ниже:
Здесь мы видим, что когда возникает ValueError
, код переходит вперед и ничего не делает.
В следующем разделе вы узнаете, как использовать метод Python remove
для удаления всех элементов, соответствующих значению.
Python удалить все элементы, соответствующие значению
Как показано ниже, метод Python .remove()
удаляет только первый экземпляр элемента в списке. Что если вы хотите удалить все экземпляры этого элемента в списке? Чтобы достичь этого, мы можем использовать цикл while, чтобы повторять действие, пока условие истинно.
В частности, наш цикл while будет продолжать удалять элемент из нашего списка, пока он существует в списке. Посмотрим, как это работает в Python:
Мы видим здесь, что метод remove применяется столько раз, сколько элемент «datagy» есть в нашем списке. В этот момент код продолжает выполняться и выводит значения нашего списка.
Другой способ сделать это — использовать генератор списка. Мы можем заставить генератор списка проходить по каждому элементу в нашем списке и проверять, равен ли элемент тому, который мы хотим удалить. Если нет, то мы включаем его в наш новый список.
Посмотрим, как это выглядит на Python:
В приведенном выше примере мы перебрали каждый элемент нашего списка и включили значение, если оно не равно элементу, который мы хотели удалить.
В следующем разделе вы узнаете, как использовать метод pop
в Python для удаления элемента списка по его индексной позиции.
Метод Python Pop для удаления элемента списка на основе позиции индекса
Метод pop
в Python является распространенным методом списка, который удаляет элемент из списка и возвращает его. В то время как метод remove
удаляет элемент по его значению, метод pop
удаляет элемент по его индексу. При использовании метода pop
мы указываем индекс элемента и удаляем его, что означает, что мы возвращаем элемент и удаляем его из списка.
Давайте посмотрим, как это работает в Python:
Можно заметить, что при удалении существующего элемента, значение удаляется из списка и возвращается.
Как мы можем получить доступ к извлеченному элементу? Мы можем присвоить его переменной. Давайте посмотрим, как это сделать:
Давайте посмотрим, что произойдет, если попытаться применить метод pop
к несуществующему элементу:
Мы видим, что при попытке удалить несуществующий элемент возвращается IndexError
.
В следующем разделе вы узнаете, как удалить элемент с помощью метода del
по индексу списка, но не возвращать его.
Метод Python del для удаления элемента списка на основе позиции индекса и не возврата его
Оператор del
в Python аналогичен методу pop
в том, что он удаляет элемент списка по его позиции. Он отличается от метода pop тем, что метод удаляет элемент, но не возвращает его.
Оператор del
идет дальше и позволяет нам удалить срез элементов из списка.
Давайте посмотрим, как мы можем сделать и то, и другое, используя оператор del в Python:
Мы можем видеть, что в Python мы можем удалить как отдельный элемент, так и срез элементов из списка.
Но что происходит, когда мы пытаемся удалить элемент на позиции, которая не существует? Мы получаем IndexError
. Давайте посмотрим, как это происходит:
В следующем разделе вы узнаете, как удалить все элементы из списка в Python, используя метод clear.
Удалить все элементы из списка Python с помощью Clear
Могут быть моменты, когда вы захотите удалить все элементы из списка в Python – именно здесь метод .clear()
приходит на помощь. Метод clear
работает непосредственно с объектом списка, что означает, что нам не нужно переназначать список, чтобы его очистить.
Давайте посмотрим, как можно использовать метод clear
для удаления всех элементов из списка в Python:
Мы видим, что при применении метода clear
к списку, все элементы удаляются из этого списка, возвращая пустой список.
В следующем разделе вы узнаете, как удалять элементы из списка Python с использованием срезов.
Удаление элементов из списка Python с помощью нарезки
Мы также можем удалить элементы из списка, просто используя срезы. Преимуществом этого подхода является то, что мы можем обратить метод срезов с помощью метода del, указывая элементы, которые хотим оставить.
Например, если мы хотим сохранить все элементы, кроме первого и последнего, мы могли бы написать следующее:
Здесь мы переназначаем список Python на его срез, чтобы иметь возможность фильтровать элементы среза.
В следующем разделе вы узнаете, как использовать Python для удаления элементов из списка по условию.
Удаление элементов из списка Python на основе условия
В этом финальном разделе вы научитесь удалять элементы из списка Python условно. Например, вы можете удалить нечисловые элементы из списка или удалить только нечетные числа из списка.
Мы достигнем этого, используя включения списков в Python, которые я подробно рассматриваю здесь. Включения списков позволяют нам создавать новые списки, итерируя по объекту-итерируемому, например, по списку.
Давайте посмотрим, как мы можем использовать генератор списков, чтобы удалить все нечисловые элементы из нашего списка:
Здесь мы перебираем наш список и проверяем, является ли элемент числовым значением. Если да, то добавляем его в наш список. Если нет, то не включаем его.
Также мы можем удалить все нечётные элементы из списка, используя генератор списков в Python:
В приведенном выше примере мы используем оператор деления по модулю, чтобы определить, является элемент четным или нечетным. Любой четный элемент при делении на 2 даст остаток 0. Соответственно, любой нечетный элемент даст остаток 1. Из-за этого мы можем использовать списковое включение, чтобы удалить все нечетные числа из списка.
Заключение
В этом учебном пособии вы узнали, как использовать Python для удаления элементов из списка. Вы узнали, как использовать методы pop, del, remove для удаления элементов из списка, включая то, когда использовать каждый метод и их достоинства и недостатки. Наконец, вы узнали, как условно удалять элементы из списка, используя списковые включения в Python.
Чтобы узнать больше о методе списка Python .remove()
, ознакомьтесь с официальной документацией здесь.
Last updated