【发布时间】:2014-01-17 18:54:28
【问题描述】:
我已经阅读了 list 的 python docs 以及 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 "<stdin>", line 1, in <module>
NameError: name 'c' is not defined
切片操作删除
>>> l
[1, 2, 3, 4]
>>> del l[::2]
>>> l
[2, 4]
l[::2] 返回新列表。但del l[::2] 进行就地删除。那么在这种情况下,不是返回一个新列表吗?这里到底发生了什么?
【问题讨论】: