说我有一个a带有一些值的列表,我做了一个b = a[:].然后修改列表的内容b将不会a根据我读过的内容更改列表.所以,这意味着它的深层次.但python文档仍然将此称为浅拷贝.有人能为我清楚这个吗?
要证明浅拷贝意味着什么:
a = [ [1,2], [3,4,5] ]
b = a[:] # make a shallow copy
a is b # not the same object, because this is a copy
=> False
a == b # same value, because this is a copy
=> True
a[0] is b[0] # elements are the *same objects*, because this is a *shallow* copy
=> True
Run Code Online (Sandbox Code Playgroud)
改变结构a将不会反映出来b,因为这是一个副本:
a.pop()
len(a)
=> 1
len(b)
=> 2
Run Code Online (Sandbox Code Playgroud)
为了证明与深拷贝的区别:在原地更改包含在a(而不是a's结构)中的对象,反映在b,因为b引用相同的对象a.
a[0][0] = 'XYZ'
b[0]
=> ['XYZ', 2]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
565 次 |
| 最近记录: |