zoukankan      html  css  js  c++  java
  • Python学习日记之字典深复制与浅复制

    Python中通过copy模块有两种复制(深复制与浅复制)

    1. copy 浅复制 复制时只会复制父对象,而不会复制对象的内部的子对象。
    2. deepcopy 深复制 复制对象及其子对象

    因此,复制后对原dict的内部的子对象(方括号[]内元素)进行操作时,浅复制dict操作影响而变化,而深复制dict则不会受操作变化

    而使用del 对父对象进行操作时,浅复制,深复制后的副本为全新副本,不受影响

     1 #!/usr/bin/env python3
     2 # -*- coding:utf-8 -*-
     3 
     4 from copy import deepcopy
     5 adict={'姓名':'Tom','性别':['','']}
     6 bdict=adict.copy()     #浅复制(浅拷贝)
     7 cdict=deepcopy(adict)        #深复制(深拷贝)
     8 def travel(dict):
     9     for key,value in dict.items():
    10         print('%s : %s'%(key,value))
    11 
    12 print('进行删除操作')
    13 adict['性别'].remove('')
    14 travel(adict)
    15 print('copy浅复制(浅拷贝)')
    16 travel(bdict)
    17 print('deepcopy深复制(深拷贝)')
    18 travel(cdict)

    输出结果:

     


    结论:使用copy方式进行的是浅复制,故对原adict或浅复制结果bdict的子对象的操作,是等同的,且不会对深复制cdict产生影响。

    对深复制cdict的操作不会对原adict有影响


    扩展(深复制与浅复制对比)

         浅复制:copy  , [ : ],set,list...

         深复制:deepcopy


    开发环境: python3

  • 相关阅读:
    bat 处理adb脚本
    作用域,高阶函数
    常用内置函数-6
    习题元祖与字典的值交换
    函数的参数
    序列类型与非序列类型
    格式化输出,深浅复制
    可变,不可变与 id 的关系
    linux-shell系列6-rundeck生成host文件
    linux-shell系列5-统计
  • 原文地址:https://www.cnblogs.com/mokero/p/6662202.html
Copyright © 2011-2022 走看看