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

     1  #0 1 2 3 4 5 6 7 8 9 10 11
     2    li = [1,1,2,2,3,3,4,5,6,7,8,9]
     3 #循环一次 #[1,2,2,3,3,4,5,6,7,8,9]
     4            #0 1 2 3 4 5 6 7 8 9 10
     5 for i in li:
     6     if i%2!=0:
     7         li.remove(i)
     8 print(li)
     9 # 运行结果:[1, 2, 2, 3, 4, 6, 8]
    10 
    11 #循环删除list的时候,都会出现这样的问题
    12 #循环的时候,不要删除元素,下标会错乱
    13 
    14 #解决办法
    15 li = [1,1,2,2,3,3,4,5,6,7,8,9]
    16 # l2 = li
    17 l2 = li[:]
    18 print(id(li)) #查看内存地址
    19 print(id(l2))
    20 # l2 = [1,1,2,2,3,3,4,5,6,7,8,9]
    21 for i in l2:
    22     if i%2!=0:
    23         li.remove(i)
    24 print(li)
    25 # 运行结果:[2, 2, 4, 6, 8]  正确的
    26 
    27 #深拷贝   不同的内存地址 不相互影响
    28 li = [1,1,2,2,3,3,4,5,6,7,8,9]
    29 l2 = li[:]
    30 #浅拷贝   指向相同的内存地址 相互影响
    31 li = [1,1,2,2,3,3,4,5,6,7,8,9]
    32 l2 = li
    33 
    34 #深拷贝和浅拷贝的区别,浅拷贝不会开辟新的内存地址,深拷贝会开辟新的内存地址
    35 
    36 import copy
    37 d = {'name':'bai','age':28}
    38 #d1 = d  #浅拷贝
    39 d1=copy.deepcopy(d) #深拷贝
    40 d1['age']=12
    41 
    42 print(id(d))
    43 print(id(d1))
    44 print(d)
    45 print(d1)
    46 运行结果:2962609174280
    47 2962610675072
    48 {'name': 'bai', 'age': 28}
    49 {'name': 'bai', 'age': 12}
    50 
    51 ====================================================================
    52 
    53 import copy
    54 d = {'name':'bai','age':[3,4,5]}
    55 #d1 = d  #浅拷贝
    56 d1=copy.copy(d)  #还是浅拷贝  在深入一层的时候就是浅拷贝了
    57 d1['age'].append(19)
    58 print(id(d))
    59 print(id(d1))
    60 print(d)
    61 print(d1)
    62 
    63 运行结果:1839810967304
    64                   1839810967376
    65 {'name': 'bai', 'age': [3, 4, 5, 19]}
    66 {'name': 'bai', 'age': [3, 4, 5, 19]}
  • 相关阅读:
    ABP WebApi的请求类型
    对服务器的文件或文件夹压缩
    VS运行遇到的那些坑
    asp.net core Api集成Swagger
    通过文件路径获取文件名
    读取服务器或者本地的文件夹下面的文件
    计算出 3 至 1000 范围内最大的十个素数,放入数组中,并计算出其累加和。
    LINUX 无法登入系统(2017-1-16)
    zynq里面的AXI总线(2017-1-11)
    学习随笔(2017-1-10)
  • 原文地址:https://www.cnblogs.com/baiby/p/10775922.html
Copyright © 2011-2022 走看看