• Day 7 深copy和浅Copy


    dict.fromkeys的用法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #dict.fromkeys的用法
    #例子1
    dic = dict.fromkeys([1,2,3],[])
    print(dic)     #{1: [], 2: [], 3: []}
    dic[2].append('alex')   #{1: ['alex'], 2: ['alex'], 3: ['alex']}
    print(dic)
    #例子二
    dic1 = dict.fromkeys(['Q','w'],['a','b'])
    print(dic1)   #{'Q': ['a', 'b'], 'w': ['a', 'b']}
    dic1['w'].append('d')
    print(dic1)   #{'Q': ['a', 'b', 'd'], 'w': ['a', 'b', 'd']}

     浅copy和深copy

    浅copy的引入:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    引入浅copy
    #只是第一层的列表变化
    l1 = [1,2,3]
    l2 = l1[:]
    l1.append(123)
    print(l1)    #[1, 2, 3, 123]
    print(l2)    #[1, 2, 3]
    #第二层列表改变
    l3 = [1,[2,3],4]
    l4 = l3[:]    #实质上是浅copy
    l3[1].append(666)
    print(l3)    #[1, [2, 3, 666], 4]
    print(l4)    #[1, [2, 3, 666], 4]

     浅copy:

    1
    2
    3
    4
    5
    6
    7
    #浅copy
    #对于浅copy来说,第一层都是独立的内存地址,从第二层开始都是指向同一个内存地址,一变全都变。
    l5 = [9,8,[7,6],5]
    l6 = l5.copy()
    l5[2].append(888)
    print(l5,id(l5),id(l5[2]))  #[9, 8, [7, 6, 888], 5] 31820816 31820856
    print(l6,id(l6),id(l6[2]))  #[9, 8, [7, 6, 888], 5] 31819336 31820856

     深copy:

    1
    2
    3
    4
    5
    6
    7
    8
    #深copy
    #对于深copy来说,无论多少层,在内存中,都是两个独立的内存地址。
    import copy
    l7 = [9,8,[7,6],5]
    l8 = copy.deepcopy(l7)
    l7[2].append(888)
    print(l7,id(l7),id(l7[2])) #[9, 8, [7, 6, 888], 5] 41955896 41955816
    print(l8,id(l8),id(l8[2])) #[9, 8, [7, 6    ], 5] 41957976 41957936

     

  • 相关阅读:
    js笔记一:在HTML中使用javascript
    opencv排错总结
    《学习openCV》例程解析 ex_8_2 (轮廓)
    《学习openCV》例程解析 ex_9_3(codeBook模型实现背景减除)
    《学习openCV》例程解析 ex_9_1 (像素片段)
    《学习openCV》例程解析 ex_9_2(背景减除)
    《学习openCV》例程解析 ex_8_3 (轮廓)
    JavaScript鼠标事件
    sumlime text2 快捷键
    HTML字符实体(转)
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/8379154.html
Copyright © 2020-2023  润新知