zoukankan      html  css  js  c++  java
  • 集合及深浅copy

    集合set={}               

    集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

    1.去重,把一个列表变成集合,就自动去重了。

    2.关系测试,测试两组数据之前的交集、差集、并集等关系。

    深浅copy

    1.赋值运算

    # l1 = [1,2,3,['cat','dog']]
    # l2=l1
    # l1[0]=4
    
    #print(l1) = [4, 2, 3, ['cat', 'dog']]
    #print(l2) = [4, 2, 3, ['cat', 'dog']]
    
    # l1[3][0]='big'
    # print(l1) = [1, 2, 3, ['big', 'dog']]
    # print(l2) = [1, 2, 3, ['big', 'dog']]
    对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。


    2.浅copy

    # l1 = [1,2,3,['cat','dog']]
    # l2=l1.copy()
    
    # print(l1,id(l1))=[1, 2, 3, ['cat', 'dog']] 35482376
    # print(l2,id(l2))=[1, 2, 3, ['cat', 'dog']] 35523464
    
    # l1[0]=5
    # print(l1,id(l1[0)=[5, 2, 3, ['cat', 'dog']] 1564828000
    # print(l2,id(l1[0])=[1, 2, 3, ['cat', 'dog']]1564827872
    
    # l1[3][1]=5
    # print(l1,id(l1[3][1]))=[1, 2, 3, ['cat', 5]] 1564828000
    # print(l2,id(l2[3][1]))=[1, 2, 3, ['cat', 5]] 1564828000
    对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性.

    3.深copy
    
    
    # l1 = [1,2,3,['barry','alex']]
    # l2 = copy.deepcopy(l1)
    
    # print(l1,id(l1))  # [1, 2, 3, ['barry', 'alex']] 2915377167816
    # print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2915377167048
    
    # l1[1] = 222
    # print(l1,id(l1))  # [1, 222, 3, ['barry', 'alex']] 2915377167816
    # print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2915377167048
    
    # l1[3][0] = 'wusir'
    # print(l1,id(l1[3]))  # [1, 222, 3, ['wusir', 'alex']] 2915377167240
    # print(l2,id(l2[3]))  # [1, 2, 3, ['barry', 'alex']] 2915377167304
    
    对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
    
    
    


     


     
     
     
     
  • 相关阅读:
    codevs 3641 上帝选人
    codevs 1966 乘法游戏
    codevs 1345 饥饿的奶牛
    codevs 1962 马棚问题--序列型DP
    codevs 1959 拔河比赛--判断背包内刚好装满n/2个物品
    codevs 1297 硬币
    [转载]矩阵取数游戏
    101.金明的预算方案(分组背包)
    105.(并查集结合绝对值最小的01背包)选学霸
    POJ 2528 Mayor's posters(线段树)
  • 原文地址:https://www.cnblogs.com/liusouthern/p/8086410.html
Copyright © 2011-2022 走看看