python进阶教程深拷贝浅拷贝

深拷贝、浅拷贝

1.浅拷贝

浅拷贝是对于一个对象的顶层拷贝

通俗的理解是:拷贝了引用,并没有拷贝内容

2.深拷贝

深拷贝是对于一个对象所有层次的拷贝(递归)

进一步理解拷贝

In[23]:a=[11,22,33]

In[24]:b=[44,55,66]

In[25]:c=(a,b)

In[26]:e=copy.deepcopy(c)

In[27]:a.append(77)

In[28]:a

Out[28]:[11,22,33,77]

In[29]:b

Out[29]:[44,55,66]

In[30]:c

Out[30]:([11,22,33,77],[44,55,66])

In[31]:e

Out[31]:([11,22,33],[44,55,66])

In[32]:

In[32]:

In[32]:f=copy.copy(c)

In[33]:a.append(88)

In[34]:a

Out[34]:[11,22,33,77,88]

In[35]:b

Out[35]:[44,55,66]

In[36]:c

Out[36]:([11,22,33,77,88],[44,55,66])

In[37]:e

Out[37]:([11,22,33],[44,55,66])

In[38]:f

Out[38]:([11,22,33,77,88],[44,55,66])

3.拷贝的其他方式

浅拷贝对不可变类型和可变类型的copy不同

In[88]:a=[11,22,33]

In[89]:b=copy.copy(a)

In[90]:id(a)

Out[90]:

In[91]:id(b)

Out[91]:

In[92]:a.append(44)

In[93]:a

Out[93]:[11,22,33,44]

In[94]:b

Out[94]:[11,22,33]

In[95]:

In[95]:

In[95]:a=(11,22,33)

In[96]:b=copy.copy(a)

In[97]:id(a)

Out[97]:

In[98]:id(b)

Out[98]:

分片表达式可以赋值一个序列

a=abc

b=a[:]

字典的copy方法可以拷贝一个字典

d=dict(name=zhangsan,age=27)

co=d.copy()

有些内置函数可以生成拷贝(list)

a=list(range(10))

b=list(a)

copy模块中的copy函数

importcopy

a=(1,2,3)

b=copy.copy(a)




转载请注明:http://www.aierlanlan.com/rzgz/2854.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了