背景:写了一段代码,在运行的时候给添加数据时,打印出来是对的,但是随着运行,返回的却是一串一模一样的字符串
原因:
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:所有元素都不同步
发表评论