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

    1.赋值
    l1=[1,2,3,4,[5,6,7]]
    l2=l1 #赋值 赋值不是拷贝
    l1.append(8)
    print(l1)
    print(l2)
    
    2.浅拷贝
    l1=[1,2,3,4,[5,6,7]]
    l2=l1[:]#浅拷贝
    l2=l1.copy()#浅拷贝---只拷贝第一层
    print(id(l1[0]))#内存地址相同
    print(id(l2[0]))#内存地址相同
    浅拷贝会创建一个新的列表(容器),
    新创建的列表中的元素和原列表的元素用的是同一内存空间
    l1 = [1,2,3,4]
    l2 = l1.copy()
    print(l1)
    print(id(l1))
    print(id(l2))
    print(id(l1[0]))
    print(id(l2[0]))
    两个容器的内存地址不同,里面与元素的内存地址相同
    例1:
    li = [1,2,32,[3,4,5]]
    l2 = li.copy()
    li.append(8)
    print(l2)#[1, 2, 32, [3, 4, 5]]
    print(li)#[1, 2, 32, [3, 4, 5], 8]
    
    li[-1].append(8)
    print(l2)#[1, 2, 32, [3, 4, 5, 8]]
    print(li)#[1, 2, 32, [3, 4, 5, 8]]
    例2:
    l1 = [1,2,3,(1,2,3)]
    l2 = l1.copy()
    l2[-1] = 6
    print(l1)  # 不变[1,2,3,(1,2,3)]
    print(l2)  # 不变[1,2,3,6] 改变了列表中最后一个元素的指向关系
    l1 = [1,2,3,4,[5,6,7,]]
    l2 = l1.copy()
    l1[-1].append(8)
    print(l2)  #[1,2,3,4,[5,6,7,8]]
    
    3.深copy
    import copy
    li = [1,2,3,4,5,[6,7,8]]
    l2 = copy.deepcopy(li)
    print(li)
    # print(id(li))
    print(id(li[-1]))
    print(l2)
    # print(id(l2))
    print(id(l2[-1]))
    深拷贝 --
      不可变的数据类型和原列表指向同一个空间
      可变数据会创建一个新的空间
    1.
    import copy
    li = [1,2,3,4,5,[6,7,8]]
    l2 = copy.deepcopy(li)
    li[-1].append(678)
    print(li)#[1, 2, 3, 4, 5, [6, 7, 8, 678]]
    print(l2)#[1, 2, 3, 4, 5, [6, 7, 8]]
    2.
    import copy
    li = [3,4,5,[1,2,3,4],6,7,8,{"k":'v'}]
    l2 = copy.deepcopy(li)
    li[-1]['k'] = "a"
    print(li)
    print(l2)
    

    例1:

    dic = {}   # "v":4
    li = []    #[{"v":0},{"v":1},{"v":2},{"v":3},{"v":4}]
    for i in range(0,5):
        dic["v"] = i
        li.append(dic)
    print(li)
    >>>[{'v': 4}, {'v': 4}, {'v': 4}, {'v': 4}, {'v': 4}]
    
  • 相关阅读:
    iOS 6 Tutorials
    iPhone:文本设计的注意事项
    Beginning Storyboards in iOS 5 Part 2
    代友招聘一名网站开发人员
    利用反射自己写的一个ModelHelper类
    SQL中 对逻辑值取反赋值的语句
    记点uml的表现方式
    我的2008年
    Framework 4.0 新关键字dynamic 之我见(一)
    我的采集小程序配置篇
  • 原文地址:https://www.cnblogs.com/pythonblogs/p/11004938.html
Copyright © 2011-2022 走看看