python python列表对象复制

葫芦的运维日志

下一篇 搜索 上一篇

2019/08/20 20:16


python对象复制

结论

等号赋值

赋值后的对象内存地址相同,改变新对象,老对象同步改变。

copy.copy浅赋值

赋值后的对象内存地址不同,但是列表内对象地址相同。 如果修改新列表内的数组对象,老列表同步修改。 如果修改列表内的数值对象,老列表不变。

copy.deepcopy深赋值

赋值后的对象内存地址不同,列表内对象地址也不同。 修改新对象完全不影响老对象。

实验脚本

>>> import copy
>>> a=[1,[1,2],3]
>>> b=a
>>> b
[1, [1, 2], 3]
>>> id(a)
4549388120
>>> id(b)
4549388120
>>> b[0]=3
>>> a
[3, [1, 2], 3]
>>>
>>>
>>> c=copy.copy(a)
>>> id(c)
4549389992
>>> id(a)
4549388120
>>> c[0]=4
>>> a
[3, [1, 2], 3]
>>> c
[4, [1, 2], 3]
>>> c[1].append(3)
>>> a
[3, [1, 2, 3], 3]
>>> c
[4, [1, 2, 3], 3]
>>>
>>> id(a[2])
140345184649736
>>> id(c[2])
140345184649736
>>> id(c[1])
4549388192
>>> id(a[1])
4549388192
>>> d=copy.deepcopy(a)
>>> id(d)
4549389632
>>> id(a)
4549388120
>>> d[1].append(4)
>>> a
[3, [1, 2, 3], 3]
>>> d
[3, [1, 2, 3, 4], 3]

葫芦的运维日志

上一篇 搜索 下一篇
© 冰糖葫芦甜(bthlt.com) 2019 王梓 赞助联系方式 陕ICP备17005322号