我见过有人[:]用来制作列表的燕子副本,例如:
>>> a = [1,2,3,4]
>>> b = a[:]
>>> a[0] = 5
>>> print a
[5, 2, 3, 4]
>>> print b
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
我明白那个.但是,我在分配到列表时也看到了使用这种表示法的好处,例如:
>>> a = [1,2,3,4]
>>> b = [4,5,6,7]
>>> a[:] = b
>>> print a
[4, 5, 6, 7]
>>> print b
[4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
但我真的不明白为什么他们[:]在这里使用.我不知道有什么区别吗?
a[:] = b和之间确实存在差异a = b.
>>> a = [1,2,3,4]
>>> b = [4,5,6,7]
>>> c = [8,9,0,1]
>>> c = b
>>> a[:] = b
>>> b[0] = 0
>>> a
[4, 5, 6, 7]
>>> c
[0, 5, 6, 7]
>>>
Run Code Online (Sandbox Code Playgroud)
当你写作时a = b,a是对b的相同列表的引用:b中的任何更改都会影响a
当你写a[:] = b一个是用b的元素初始化的列表时:b的变化不会影响a
而且还之间的差异a[:] = b和a = b[:].
>>> a = [1,2,3,4]
>>> b = [4,5,6,7]
>>> c = a
>>> a = b[:]
>>> a
[4, 5, 6, 7]
>>> c
[1, 2, 3, 4]
>>> a = [1,2,3,4]
>>> b = [4,5,6,7]
>>> c = a
>>> a[:] = b
>>> a
[4, 5, 6, 7]
>>> c
[4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
使用a = b[:],如果另一个指向它的变量不受影响,则使用b中的元素创建一个新列表
有了a[:] = b,你改变了一个元素.如果指向它的另一个变量也被更改.