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 """