Удаление элемента из списка в 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()
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']
values.remove(1)

print(values)

# Возвращает: ['bemind.gitbook.io', 2, 3, 'bemind.gitbook.io']

Мы применили метод remove к нашему списку на месте, что означает, что нам не нужно было переназначать значения.

Что происходит, если мы пытаемся удалить элемент, которого не существует? Давайте посмотрим, что произойдет, если мы запустим следующий код:

# Удаление элемента из списка по значению с использованием метода .remove(), который не существует
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']

# Вызовет исключение ValueError, так как элемент 4 отсутствует в списке
values.remove(4)

print(values)

# Возвращает: ValueError: list.remove(x): x not in list

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

Давайте посмотрим, как это можно сделать ниже:

# Удаление элемента из списка по значению с использованием метода .remove() с обработкой исключения
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']
try:
    values.remove(4)
except ValueError:
    pass
print(values)

# Возвращает: ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']

Здесь мы видим, что когда возникает ValueError, код переходит вперед и ничего не делает.

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

Python удалить все элементы, соответствующие значению

Как показано ниже, метод Python .remove() удаляет только первый экземпляр элемента в списке. Что если вы хотите удалить все экземпляры этого элемента в списке? Чтобы достичь этого, мы можем использовать цикл while, чтобы повторять действие, пока условие истинно.

В частности, наш цикл while будет продолжать удалять элемент из нашего списка, пока он существует в списке. Посмотрим, как это работает в Python:

# Удаление всех элементов списка по значению с использованием метода .remove()
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']
while 'bemind.gitbook.io' in values:
    values.remove('bemind.gitbook.io')
print(values)

# Возвращает: [1, 2, 3]

Мы видим здесь, что метод remove применяется столько раз, сколько элемент «datagy» есть в нашем списке. В этот момент код продолжает выполняться и выводит значения нашего списка.

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

Посмотрим, как это выглядит на Python:

# Удаление всех элементов списка по значению с использованием генератора списка
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']
values = [value for value in values if value != 'bemind.gitbook.io']
print(values)

# Возвращает: [1, 2, 3]

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

В следующем разделе вы узнаете, как использовать метод pop в Python для удаления элемента списка по его индексной позиции.

Метод Python Pop для удаления элемента списка на основе позиции индекса

Метод pop в Python является распространенным методом списка, который удаляет элемент из списка и возвращает его. В то время как метод remove удаляет элемент по его значению, метод pop удаляет элемент по его индексу. При использовании метода pop мы указываем индекс элемента и удаляем его, что означает, что мы возвращаем элемент и удаляем его из списка.

Давайте посмотрим, как это работает в Python:

# Удаление элемента из списка по индексу с использованием метода .pop()
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']
values.pop(0)
print(values)

# Возвращает: [1, 2, 3, 'bemind.gitbook.io']

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

Как мы можем получить доступ к извлеченному элементу? Мы можем присвоить его переменной. Давайте посмотрим, как это сделать:

# Удаление элемента из списка по индексу с использованием метода .pop() и вывод удаленного элемента
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']
item = values.pop(0)
print(item)

# Возвращает: bemind.gitbook.io

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

# Удаление элемента из списка по индексу с использованием метода .pop(), который не существует
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']

# Вызовет исключение IndexError, так как индекс 6 выходит за границы списка
values.pop(6)

print(values)

# Возвращает: IndexError: pop index out of range

Мы видим, что при попытке удалить несуществующий элемент возвращается IndexError.

В следующем разделе вы узнаете, как удалить элемент с помощью метода del по индексу списка, но не возвращать его.

Метод Python del для удаления элемента списка на основе позиции индекса и не возврата его

Оператор del в Python аналогичен методу pop в том, что он удаляет элемент списка по его позиции. Он отличается от метода pop тем, что метод удаляет элемент, но не возвращает его.

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

Давайте посмотрим, как мы можем сделать и то, и другое, используя оператор del в Python:

# Удаление элементов из списка по значению с использованием оператора del
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']
del values[0]
print(values)
# Возвращает: [1, 2, 3, 'bemind.gitbook.io']

values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']
del values[1:3]
print(values)
# Возвращает: ['bemind.gitbook.io', 3, 'bemind.gitbook.io']

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

Но что происходит, когда мы пытаемся удалить элемент на позиции, которая не существует? Мы получаем IndexError. Давайте посмотрим, как это происходит:

# Удаление элемента из списка по индексу с использованием оператора del, который не существует
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']

# Вызовет исключение IndexError, так как индекс 10 выходит за границы списка
del values[10]

print(values)
# Возвращает: IndexError: list assignment index out of range

В следующем разделе вы узнаете, как удалить все элементы из списка в Python, используя метод clear.

Удалить все элементы из списка Python с помощью Clear

Могут быть моменты, когда вы захотите удалить все элементы из списка в Python – именно здесь метод .clear() приходит на помощь. Метод clear работает непосредственно с объектом списка, что означает, что нам не нужно переназначать список, чтобы его очистить.

Давайте посмотрим, как можно использовать метод clear для удаления всех элементов из списка в Python:

# Очистка всего списка в Python
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']

values.clear()
print(values)

# Возвращает: []

Мы видим, что при применении метода clear к списку, все элементы удаляются из этого списка, возвращая пустой список.

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

Удаление элементов из списка Python с помощью нарезки

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

Например, если мы хотим сохранить все элементы, кроме первого и последнего, мы могли бы написать следующее:

# Удаление элементов из списка с использованием среза
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']
values = values[1:-1]
print(values)
# Возвращает: [1, 2, 3]

Здесь мы переназначаем список Python на его срез, чтобы иметь возможность фильтровать элементы среза.

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

Удаление элементов из списка Python на основе условия

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

Мы достигнем этого, используя включения списков в Python, которые я подробно рассматриваю здесь. Включения списков позволяют нам создавать новые списки, итерируя по объекту-итерируемому, например, по списку.

Давайте посмотрим, как мы можем использовать генератор списков, чтобы удалить все нечисловые элементы из нашего списка:

# Удаление элементов из списка с условием
values = ['bemind.gitbook.io', 1, 2, 3, 'bemind.gitbook.io']
values = [item for item in values if str(item).isdigit()]

print(values)
# Возвращает: [1, 2, 3]

Здесь мы перебираем наш список и проверяем, является ли элемент числовым значением. Если да, то добавляем его в наш список. Если нет, то не включаем его.

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

# Удаление элементов из списка с условием
values = [1, 2, 3, 4, 5, 6]
values = [item for item in values if item % 2 == 0]

print(values)
# Возвращает: [2, 4, 6]

В приведенном выше примере мы используем оператор деления по модулю, чтобы определить, является элемент четным или нечетным. Любой четный элемент при делении на 2 даст остаток 0. Соответственно, любой нечетный элемент даст остаток 1. Из-за этого мы можем использовать списковое включение, чтобы удалить все нечетные числа из списка.

Заключение

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

Чтобы узнать больше о методе списка Python .remove(), ознакомьтесь с официальной документацией здесь.

Last updated