python copy用法,python copyto

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: