[Python] Разница между del, удаление и поп в списках


Answers

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

При удалении индекса i из списка из n элементов вычислительные сложности этих методов

del     O(n - i)
pop     O(n - i)
remove  O(n)
Question
>>> a=[1,2,3]
>>> a.remove(2)
>>> a
[1, 3]
>>> a=[1,2,3]
>>> del a[1]
>>> a
[1, 3]
>>> a= [1,2,3]
>>> a.pop(1)
2
>>> a
[1, 3]
>>> 

Есть ли разница между тремя вышеуказанными методами для удаления элемента из списка?




В то время как pop и delete оба принимают индексы, чтобы удалить элемент, как указано в вышеприведенных комментариях. Ключевым отличием является временная сложность для них. Сложность времени для pop () без индекса - O (1), но это не тот же случай для удаления последнего элемента.

Если ваш случай использования всегда должен удалять последний элемент, всегда желательно использовать функцию pop () over delete (). Для более подробного объяснения сложностей во времени вы можете обратиться к https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt




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

n = [1, 3, 5]

n.remove(n[1])

n будет ссылаться на [1, 5]




Уже хорошо ответил. Это один из моего конца :)

Очевидно, что pop - единственный, который возвращает значение, а remove - единственный, который ищет объект, а del ограничивает себя простым удалением.