关于Python的深浅拷贝
1 import copy 2 3 # 浅拷贝 只拷贝第一层,后面层的数据会变是因为指针跟着改变了 4 copyone = ["walk", 28, [4300, 5000]] 5 cp1 = copyone.copy() 6 cp1[0] = ‘on_foot‘ 7 cp1[1] = ‘29‘ 8 cp1[2][0] = 9300 9 print("列表copyone: %s"%copyone) # 浅拷贝后,原数据中的4300已变成9300 10 print("浅拷贝效果: %s"%cp1) 11 12 #深拷贝 即完全拷贝 13 copyone = ["walk", 28, [4300, 5000]] 14 cp2 = copy.deepcopy(copyone) 15 cp2[0] = ‘on_foot‘ 16 cp2[1] = ‘29‘ 17 cp2[2][0] = 9300 18 print("列表copyone: %s"%copyone) # 深拷贝后,原列表数据无变化 19 print("浅拷贝效果: %s"%cp2)
执行效果如下:
列表copyone: [‘walk‘, 28, [9300, 5000]]
浅拷贝效果: [‘on_foot‘, ‘29‘, [9300, 5000]]
列表copyone: [‘walk‘, 28, [4300, 5000]]
浅拷贝效果: [‘on_foot‘, ‘29‘, [9300, 5000]]
深浅拷贝可能这样描述还是不大清晰。但是自己已经明白了。