Как работает оператор del в списке в python?
Я прочиталpython docs
заlist
и какdel
операторы работают, но мне нужно объяснение следующего поведения
В этом случае,c
а такжеl
указывает на один и тот же объект (список), поэтому внесение изменений в один влияет на другой, но удаление одного не приводит к удалению объекта. Так что здесь происходит? Это простоpointer
в список объект потерян?
>>> l = [1,2,3]
>>> c = l
>>> c.append(4)
>>> c
[1, 2, 3, 4]
>>> l
[1, 2, 3, 4]
>>> del c
>>> l
[1, 2, 3, 4]
>>> c
Traceback (most recent call last):
File "", line 1, in
NameError: name 'c' is not defined
Удаление операцией среза>>> l
[1, 2, 3, 4]
>>> del l[::2]
>>> l
[2, 4]
l[::2]
возвращает новый список. ноdel l[::2]
делает удаление на месте. Так что, в этом случае, не возвращается ли новый список? Что именно здесь происходит?