背景:写了一段代码,在运行的时候给添加数据时,打印出来是对的,但是随着运行,返回的却是一串一模一样的字符串

原因:

data_list=[] 
data ={}  
for xxx: 
     data_list.append(data)  

data_list 每次添加的是地址,随着data的变化,之前添加的data地址也是一样的,所以添加的到了最后,是一列一模一样的data。而没有存储每次变化的data。

解决:深拷贝 import copy aa.deepcopy()

区分:拷贝、浅拷贝、深拷贝

p1、python的数据类型

基本的数据类型:数字型、字符串、元祖、列表、字典、集合
不可变数据类型:数字型、字符串、元祖
可变数据类型:列表、字典、集合

基本的数据类型:数字型、字符串、元祖、列表、字典、集合
不可变数据类型:数字型、字符串、元祖
可变数据类型:列表、字典、集合

p2、python深浅拷贝

http://t.zoukankan.com/luodaoqi-p-11323806.html

一、= 赋值  

如果l2是l1的拷贝对象,则l1内部任何数据类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值变ID不变.

二、浅拷贝 copy() 

如果l2是l1的浅拷贝对像,则l1内的不可变元素发生改变,l2不变;如果l1内的元素发生了改变,则l2会跟着改变。
但l2的可变元素改变,l1也会改变。

三、深拷贝 copy.deepcopy(data) -import copy
如果l2是l1深拷贝对像,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,l2也不会变,即l2永远不会因为l1的改变而改变。

四、总结
赋值:同步所有元素  copy:只同步所有可变元素  deepcopy:所有元素都不同步