深复制和浅复制

对于嵌套列表的复制会涉及到深复制和浅复制

浅复制:只复制最外侧的容器(列表),容器内的列表使用(复制)原容器的引用;浅复制是默认行为。

In [2]: a = [1,[2,3]]                                                                                                                                                                                     

In [3]: b = a[:]                                                                                                                                                                                          

In [4]: b is a                                                                                                                                                                                            
Out[4]: False

In [5]: b == a                                                                                                                                                                                            
Out[5]: True

In [6]: a[1] is b[1]                                                                                                                                                                                      
Out[6]: True

http://www.pythontutor.com是一个python可视化站点,可以看到代码交互式动画

深复制:副本不共享内部对象引用,而是独立开辟内存空间

In [7]: from copy import deepcopy                                                                                                                                                                         

In [8]: a = [1,[2,3],[4,5]]                                                                                                                                                                               

In [9]: b = deepcopy(a)                                                                                                                                                                                   

In [10]: a is b                                                                                                                                                                                           
Out[10]: False

In [11]: a[1] is b[1]                                                                                                                                                                                     
Out[11]: False

原文地址:https://www.cnblogs.com/Peter2014/p/10510012.html