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

  • 相关阅读:
    oracle的commit
    struts2 Action 接收参数的三种方法
    git -速查表
    Windows 手动创建 服务
    Linux 上 安装 composer
    Class文件解析
    Java 从数据库中查找信息导入Excel表格中
    将Java Web项目部署到远程主机上
    Java8 map和reduce
    group By 和 Union 、 Union all的用法
  • 原文地址:https://www.cnblogs.com/mokero/p/6662202.html
Copyright © 2011-2022 走看看