Jak działa operator del na liście w Pythonie?
Przeczytałempython docs
dlalist
i jakdel
operatory działają, ale potrzebuję wyjaśnienia dla następującego zachowania
W tym przypadku,c
il
wskazuje na ten sam obiekt (listę), więc dokonywanie zmian na jednym wpływa na drugi, ale usunięcie jednego nie usuwa obiektu. Co tu się dzieje? Czy to tylkopointer
do obiektu lista jest tracona?
>>> 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 "<stdin>", line 1, in <module>
NameError: name 'c' is not defined
Usuwanie przez operację cięcia>>> l
[1, 2, 3, 4]
>>> del l[::2]
>>> l
[2, 4]
l[::2]
zwraca nową listę. aledel l[::2]
usuwa w miejscu. Więc w tym przypadku nie jest zwracana nowa lista? Co tu dokładnie się dzieje?