zoukankan      html  css  js  c++  java
  • 深拷贝,浅拷贝

      先来个实例:

     1 # 错误示范
     2 # li = [1,1,2,3,4,5,6,7,8,9]
     3 # for i in li:
     4 #     if i%2!=0:
     5 #         li.remove(i)
     6 # print(li)
     7 # 循环list,不要删除元素,下标会错乱
     8 # 循环删除list会出现上面的问题
     9 
    10 
    11 # 正确示范
    12 li = [1,1,2,3,4,5,6,7,8,9]
    13 l2=[1,1,2,3,4,5,6,7,8,9]
    14 for i in l2:            #循环l2
    15     if i%2!=0:
    16         li.remove(i)    #删除li
    17 print(li)

      浅拷贝:共用的同一个内存地址(对其中一个变量操作,会影响另个一变量的值)

      深拷贝:开辟了新的内存地址

     1 li = [1,1,2,3,4,5,6,7,8,9]
     2 l2=[1,1,2,3,4,5,6,7,8,9]        #深拷贝
     3 l4=li[:]                        #深拷贝
     4 #浅拷贝(用的同一个内存地址)
     5 l3=li                           #浅拷贝
     6 # print(id(l3))
     7 
     8 # 深拷贝(会开辟新的内存地址)
     9 print(id(li))
    10 print(id(l2))
    11 print(id(l4))
    12 import copy                 #导入copy模块
    13 d={'name':'xiaohei'}
    14 d1=copy.deepcopy(d)         #深拷贝
    15 d2=copy.copy(d)             #浅拷贝(多层嵌套,修改值会相互影响)
    16 print(id(d))
    17 print(id(d1))
  • 相关阅读:
    数据库基础+重置root密码
    Bug定级
    测试用例和测试方法
    测试基础
    HDOJ-1010 Tempter of the Bone(dfs)
    POJ
    HDU-2089 不要62 (数位DP)
    Happy!
    LOJ-1422 万圣节服装
    数字三角形(数塔问题)
  • 原文地址:https://www.cnblogs.com/cwl-bj/p/10776138.html
Copyright © 2011-2022 走看看