操作员如何运作 del 在名单B. 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 "<stdin>", line 1, in <module>
NameError: name 'c' is not defined


使用切割操作拆卸


&gt;&gt;&gt; l
[1, 2, 3, 4]
&gt;&gt;&gt; del l[::2]
&gt;&gt;&gt; l
[2, 4]



l[::2]

返回一个新列表。 但
del l[::2]

拆除到位。 所以,在这种情况下,有新列表吗? 这里究竟发生了什么?
</module></stdin>
已邀请:

莫问

赞同来自:

l


c


连接的

用同一个对象。 它们都是对列表的引用,可以通过两个链路看到操作该对象列表。
del c


释放

c

; 他删除了列表的链接。


del l[::2]

删除特定的索引集

从列表中

, 现在你合作

萨米姆

对象列表 . 你没有释放
l

, 你是释放索引

里面

列表。

您还可以将其与获取和安装值进行比较。
print c

不同于
print c[::2]


c = something

不同于
c[::2] = something

; 两个示例中的第一个仅访问对象对象或分配新值。
c

, 最近的示例提取值的切片或设置切割索引的新值。

在引擎盖下
del c

删除名称
c

从字典处理所有变量 /
globals//

给你一个关于这个词典的链接/.
del l[::2]

原因
http://docs.python.org/3/refer ... tem__
__delitem__

通过传递对象的列表中
slice//

.

要回复问题请先登录注册