zoukankan      html  css  js  c++  java
  • 深浅copy

    深浅copy

    在dict、list、set中

    s = {name:alex....}

    s2 = s,此时s2和s是共享同一份数据

    copy一份新数据

    浅copy

     1 data = {
     2     "name":"alex",
     3     "age":18,
     4     "scores":{
     5         "语文":130,
     6         "数学":60,
     7         "英语":98,
     8     }
     9 }
    10 
    11 d2 = data.copy()
    12 data["age"] = 20
    13 print(d2)
    14 print(data)
    15 
    16 >>>
    17 d2 = {'name': 'alex', 'age': 18, 'scores': {'语文': 130, '数学': 60, '英语': 98}}
    18 data = {'name': 'alex', 'age': 20, 'scores': {'语文': 130, '数学': 60, '英语': 98}}
     1 data = {
     2     "name":"alex",
     3     "age":18,
     4     "scores":{
     5         "语文":130,
     6         "数学":60,
     7         "英语":98,
     8     }
     9 }
    10 d2 = data.copy()
    11 data["age"] = 20
    12 data["scores"]["数学"] = 77  
    13 print(d2)
    14 print(data)
    15 
    16 >>>
    17 d2 = {'name': 'alex', 'age': 18, 'scores': {'语文': 130, '数学': 77, '英语': 98}}
    18 d = {'name': 'alex', 'age': 20, 'scores': {'语文': 130, '数学': 77, '英语': 98}}  #看输出 , 很神奇,两个Dict里age的值是独立的,但score字典里的分数值貌似是共享的

    相当于浅copy仅copy内层字典的内存地址,对于内存地址这个杯子内放的什么,数据还是统一的,不是单独copy过来

     深copy

     1 import copy
     2 data = {
     3     "name":"alex",
     4     "age":18,
     5     "scores":{
     6         "语文":130,
     7         "数学":60,
     8         "英语":98,
     9     }
    10 }
    11 
    12 d3 = copy.deepcopy(data)
    13 d3["scores"]["语文"] = 149
    14 
    15 print(d3)
    16 print(data)
    17 
    18 >>深copy就是得到完全独立的数据,但是平常用的比较少
    最后,这东西有什么用呢? 坦白讲,以后开发中多数情况下你用不到,但是你有要知道有这个知识点,说不定哪天有个需求就要求你必须确保你的2个复制出来的dict,list必须是独立的了。
  • 相关阅读:
    Visual Studio Code 配置C/C++环境
    二叉链的基本操作
    回文自动机
    吊打线段树的超级树状数组
    Treap平衡树
    uni-app nvue页面动态修改导航栏按钮
    uni-app map组件关于marker标记点动态设置的问题
    uni-app 提示 v-for 暂不支持循环数据
    uni-app APP端隐藏导航栏自定义按钮
    uni-app路径规划(打开第三方地图实现)
  • 原文地址:https://www.cnblogs.com/jiajin-wu/p/11839134.html
Copyright © 2011-2022 走看看