zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    LeetCode Missing Number (简单题)
    LeetCode Valid Anagram (简单题)
    LeetCode Single Number III (xor)
    LeetCode Best Time to Buy and Sell Stock II (简单题)
    LeetCode Move Zeroes (简单题)
    LeetCode Add Digits (规律题)
    DependencyProperty深入浅出
    SQL Server存储机制二
    WPF自定义RoutedEvent事件示例代码
    ViewModel命令ICommand对象定义
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/8379154.html
Copyright © 2011-2022 走看看