В чем разница между делом, удалением и попаданием в списки Pythonа

Aliaksei Yursha 30 Январь 2023 18 Апрель 2020
  1. Удаление списка Python по значению
  2. Удаление списка Python по индексу
  3. Удаление списка Python от del
В чем разница между делом, удалением и попаданием в списки Pythonа

Как часто бывает, Python предлагает несколько средств для достижения одного и того же.

Если вам нужно удалить элемент из списка, вы можете использовать любое из следующих средств.
list.remove() или list.pop() функции или встроенный оператор del.

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

Удаление списка Python по значению

list.remove() удаляет первый элемент списка, значение которого равно переданному аргументу.
При использовании этого метода вы обычно не знаете или не заботитесь о том, какой индекс удаляемого элемента.

>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.remove('Cindy')
>>> names
['Bob', 'Noah']

Будьте внимательны при использовании этого метода.
Если элемента, который вы пытаетесь удалить, нет в списке,
на Пайтоне будет “Ошибка оценки”.

>>> names = ['Bob', 'Noah']
>>> names.remove('Cindy')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

Для навигации по этой проблеме, вам нужно будет проверить, не является ли пункт
существует в списке перед попыткой list.remove() it.

>>> names = ['Bob', 'Noah']
>>> if 'Cindy' in names:
...   names.remove('Cindy')
...
>>>

Удаление списка Python по индексу

Если Вы знаете индекс элемента, который хотите удалить, Вы можете использовать метод list.pop().

>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.pop(1)
'Cindy'
>>> names
['Bob', 'Noah']

list.pop() удаляет элемент в указанном индексе и возвращает его.

Если Вы не дадите list.pop() никакого индекса, то он удалит последний элемент списка.

>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.pop()
'Noah'
>>> names
['Bob', 'Cindy']

Удаление списка Python от del

Другой вариант удаления элемента из списка по индексу - использование встроенного оператора del.
В отличие от list.pop() оператор del не возвращает удаленное значение.

>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[1]
>>> names
['Bob', 'Noah']

Оператор del также более гибкий, чем list.pop().
Вы можете использовать его для удаления диапазонов значений из списка.

>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[0:2]
>>> names
['Noah']

Вы также можете использовать его для очистки всего списка.

>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[:]
>>> names
[]

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

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

Сопутствующая статья - Python List