copy()——python中列表和字典的深拷贝与浅拷贝

       在Python中,把列表,字典对象赋值给变量时,都是“浅拷贝”,即,变量指向了对象,原来的对象改变了,这个变量的值也会跟着变。而cop()函数是“深拷贝”,重新创造一个新对象赋值给变量,原来的对象的改变不影响新对象。搞清楚深拷贝与浅拷贝有利于避免很多错误

  类比C语言中的指针,把d1比作指针,使用’d2=d1‘语句对字典名d1进行浅拷贝就好比只是创建了另外一个指向d1的指针d2,d2和d1指向的都是同一段数据,而使用copy()方法后的’d3 = d1.copy()‘,相当于又重新申请了一段内存用来把d1指向的数据复制过来,个人见解,如果错误了请批评指正

具体代码示例如下所示:

 1 d1 = {'a':1}
 2 
 3 d2 = d1  # 浅拷贝
 4 d3 = d1.copy()  # 深拷贝
 5 
 6 d1['a'] = 2  # 改变原来的字典
 7 
 8 print('d1=',d1)
 9 print('d2=',d2)
10 print('d3=',d3)
11 
12 
13 """
14 输出结果如下:
15 d1= {'a': 2}
16 d2= {'a': 2}
17 d3= {'a': 1}
18 """

 

posted @ 2019-10-31 11:07  wind_under_the_wing  阅读(791)  评论(0编辑  收藏  举报