Рубрики
Без рубрики

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

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

Автор оригинала: Pankaj Kumar.

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

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

1. Удаление элементов из списка на основе значений

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

Функция remove()

В Python есть встроенная функция remove(), которая помогает удалять элементы на основе значения.

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]

# Remove element with value = 1
lis.remove(1)

# Printing the list
print(lis)

# Remove element with value = 9
lis.remove(9)

# Printing the list
print(lis)

ВЫХОД:

[3, 4, 1, 5, 9, 2, 6, 5]
[3, 4, 1, 5, 2, 6, 5]

Здесь следует отметить следующие ключевые моменты:

  • Функция remove() принимает один аргумент – удаляемое значение.
  • Если имеется несколько вхождений данного значения, первое из них удаляется.
  • Удаление элемента не оставляет пустого места в этом положении, просто следующие элементы сдвигаются влево.
  • В случае, если такого элемента в списке нет, то сценарий вызывает ошибку.

“Error-free” использование функции remove()

Существует простой способ обойти ошибку при удалении элемента когда мы не уверены в его наличии в списке с помощью условия if.

# List of integers
lis = [1, 4, 2, 6, 1, 9, 10]

# Value to be removed
val = 6

# Check if the list contains the value 
if val in lis:

	# Remove the value from the list
	lis.remove(val)

# Printing the list
print(lis)

ВЫХОД:

[3, 1, 4, 1, 5, 9, 2, 5]

В приведенном выше фрагменте кода мы сначала проверяем наличие значения в списке перед удалением.

Удаление всех вхождений значения в списке

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

# List of integers
lis = [1, 4, 2, 6, 1, 9, 10]

# Value to be removed
val = 1

# Run until the list containes the value 
while val in lis:

	# Remove the value from the list
	lis.remove(val)

# Printing the list
print(lis)

ВЫХОД:

[3, 4, 5, 9, 2, 6, 5]

Это подводит итог использованию функции remove().

2. Удаление элементов на основе индекса

Существует несколько способов удаления элементов на основе индекса. Давайте быстро пройдемся по каждому из них.

Оператор del

del – мощный инструмент в Python, который используется для удаления целых объектов. Он также может использоваться для удаления элементов из данного списка.

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]

# Removing element from the start (index = 0)
del lis[0]

# Printing the list
print(lis)

# Removing element from the last (index = -1)
del lis[-1]

# Printing the list
print(lis)

ВЫХОД:

[1, 4, 1, 5, 9, 2, 6, 5]
[1, 4, 1, 5, 9, 2, 6]

Некоторые наблюдения, полученные из вышеприведенного сценария:

  • del не является методом. Это оператор, который удаляет объект, размещенный после него.
  • Удаление элемента из определенного индекса приводит к смещению следующего значения до указанного индекса, если он не является последним индексом.
  • Если индекс больше (или равен) длины списка, возникнет ошибка «out of range».

Функция pop()

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

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]

# Removing the fourth element (index = 3)
lis.pop(3)

# Printing the list
print(lis)

# Removing the second last element (index = -2)
lis.pop(-2)

# Printing the list
print(lis)

ВЫХОД:

[3, 1, 4, 5, 9, 2, 6, 5]
[3, 1, 4, 5, 9, 2, 5]

Вот что мы узнали о методе pop():

  • Он принимает один аргумент – индекс списка.
  • Элемент удаляется из списка на основе заданного индекса. Следующие элементы смещаются влево.
  • Он поддерживает обратную индексацию.
  • Если индекс отсутствует в списке, возникает ошибка “out of range”.

У нас есть полная статья об использовании метода pop().

3. Удаление диапазона элементов из списка

В Python предусмотрено удаление диапазона элементов из списка. Это можно сделать с помощью оператора del.

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]

# Removing first and second element
del lis[0:2]

# Printing the list
print(lis)

# Removing last two elements
del lis[-2:]

# Printing the list
print(lis)

ВЫХОД:

[4, 1, 5, 9, 2, 6, 5]
[4, 1, 5, 9, 2]

Давайте попробуем разобраться в процессе:

  • Чтобы удалить несколько элементов из списка в последовательности, необходимо предоставить ряд элементов оператору del.
  • Диапазон элементов принимает начальный индекс и/или конечный индекс, разделенные двоеточием ‘:’.
  • Удаляемые значения включают начальный индекс, но не значение конечного индекса.
  • В случае отсутствия конечного индекса диапазон включает все элементы до конца списка.

4. Удаление всех элементов из списка

Python предоставляет способ очистки всего списка в одну строку.

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]

# Removing all elements
lis.clear()

# Printing the list
print(lis)

ВЫХОД:

[ ]

Если функция применяется к пустому списку, она не вызывает никакой ошибки.

Заключение

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