`a`和`a [:]`之间有什么区别?

时间:2012-01-28 12:11:39

标签: python

阅读Python 3.2教程here,最后一个例子是

a[:] = []

这相当于

a = []

?如果是,为什么他们写a[:]而不是a?如果不是,那有什么区别?

3 个答案:

答案 0 :(得分:7)

它们并不等同。这两个例子可以让你理解其中的差异。

示例1:

>>> b = [1,2,3]
>>> a = b
>>> a[:] = []
>>> print b
[]

示例2:

>>> b = [1,2,3]
>>> a = b
>>> a = []
>>> print b
[1,2,3]

答案 1 :(得分:1)

正如您所料,正如他们所使用的那样解释了这一点:

  

这意味着以下切片返回列表a的浅表副本

答案 2 :(得分:1)

第二行不会修改列表,它只是安排a指向一个新的空列表。第一行修改a指向的列表。在python解释器中考虑这个示例seeion:

>>> b=[1,2,3]
>>> a=b
>>> a[:]=[]
>>> a
[]
>>> b
[]

ab都指向同一个列表,因此我们可以看到a[:]=[]清空了列表,现在ab都指向相同的空列表。