python copy用法,python copyto
字典数据类型的Contents 1,copy()和deepcopy() 2,copy 3和=是一般复制,浅层复制4和列表切片等同于深层复制。
1.copy()和deepcopy()对于简单对象,使用浅层复制和深层复制没有区别;然而,对于复杂的对象,比如一个列表被嵌入到一个列表中,浅拷贝中的子列表并不真正“独立”于原始对象。也就是说,如果您更改了原始对象的子列表中的某个元素,您的副本也会随之更改。这和我们对“复制”的直观理解是不一样的。
导入副本
从副本导入深层副本
原点=[1,2,[3,4]]
# origin有三个元素,1,2,[3,4]
copy1=copy.copy(原始)
copy2=深拷贝(原始)
print(copy1==copy2) # True
打印(副本1是副本2) #假
# copy1和copy2看起来一样,但不是同一个对象。
origin[2][0]=嘿!
print(origin) # [1,2,[嘿!, 4]]
print(copy1) # [1,2,[嘿!, 4]]
Print(copy2) # [1,2,[3,4]]你可以看到copy1,也就是随origin变化的shallowcopy。而copy2,也就是deepcopy,也没变。可见,deepcopy更符合我们对“复制”的直观定义:一旦复制,就应该是独立的。如果我们想要一个字面上的“副本”,我们可以使用deepcopy。
2.字典数据类型的复制函数。替换简单值时,原字典和复制的字典互不影响,但在进行添加或删除等修改操作时,两者会相互影响。它相当于上面的赋值操作,即在原对象上附加另一个标签。值替换(一级对象,父对象),字典数组类型的复制函数互不影响。
a={
name:[An , Assan]
}
b=a.copy()
一个[名称]=[一个]
打印(一份)
打印(b)
del a[名称]
打印(一份)
打印(b)
{name: [An]}
{name: [An , Assan]}
{}
{name: [An , Assan]}
“”值修改(二级对象,子对象)和字典数组类型复制功能的相互影响。
a={
name:[An , Assan]
}
b=a.copy()
一个[名字]。追加(猎人)
打印(一份)
打印(b)
一个[名字]。移除( An )
打印(一份)
打印(b)
{name: [An , Assan , Hunter]}
{name: [An , Assan , Hunter]}
{name: [Assan , Hunter]}
{name: [Assan , Hunter]}
如果不想改变原来复制的值,需要使用deepcopy。这两个变量在复制前后是独立的。
a={
name:[An , Assan]
}
b=深层拷贝(a)
一个[名字]。追加(猎人)
打印(一份)
打印(b)
{name: [An , Assan , Hunter]}
{name: [An , Assan]}
3,=是一般意义上的抄,浅抄list1=[1,2,[3,4]]
列表2=列表1
list1.append(5)
打印(列表1)
# [1, 2, [3, 4], 5]
打印(列表2)
# [1, 2, [3, 4], 5]
列表1[2]。移除(3)
打印(列表1)
# [1, 2, [4], 5]
打印(列表2)
# [1, 2, [4], 5]
4.列表切片相当于深度复制list1=[1,2,[3,4]]
list2=list1[:]
list1.append(5)
打印(列表1)
# [1, 2, [3, 4], 5]
打印(列表2)
# [1, 2, [3, 4]]
列表1[2]。移除(3)
打印(列表1)
# [1, 2, [4], 5]
打印(列表2)
# [1, 2, [4]]
来自
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。