今天在用python刷leetcode 3Sum problem时,调入到了一个大坑中,检查半天并没有任何逻辑错误,但输出结果却总是不对,最终通过调试发现原来python中list和dict类型直接赋值竟然是浅拷贝!!!因此,在实际实验中,若要实现深拷贝,建立新list或dict,使新建的list或dict变量和以前的变量只是具有相同的值,但是却具有不同的存储地址,保证在改变以前的list变量的时候,不会对新的list产生任何影响。 python中的深拷贝的实现需要通过copy.deepcopy函数来实现。具体操作如下:
>>> from copy
import deepcopy
- 关于dict的深浅拷贝实验示例
>>> a=dict()
>>> a[
'e1']=
1
>>> a[
'e2']=
2
>>> a
{
'e1':
1,
'e2':
2}
>>> b=a
>>> c=deepcopy(a)
>>> a[
'e1']=
3
>>> a
{
'e1':
3,
'e2':
2}
>>> b
{
'e1':
3,
'e2':
2}
>>> c
{
'e1':
1,
'e2':
2}
- 关于list的深浅拷贝实验示例
>>> a=[
1,
2,
2,
3]
>>> b=deepcopy(a)
>>> c=a
>>> a.remove(
2)
>>> a
[
1,
2,
3]
>>> b
[
1,
2,
2,
3]
>>> c
[
1,
2,
3]
转载请注明原文地址: https://ju.6miu.com/read-16429.html