zoukankan      html  css  js  c++  java
  • 基本数据-集合,小数据池,深浅copy

    1.集合的创建:

    # set1 = set({1, 3, 'Barry', False})
    # set1 = {1, 3, '太白金星', 4, 'alex', False, '武大'}
    # print(set1)

    2.集合的增,删

    set1 = {'太白金星', '景女神',  '武大', '三粗', 'alexsb', '吴老师'}
    # 增:
    # add
    set1.add('xx')
    print(set1)  #{'三粗', '景女神', '太白金星', '武大', '吴老师', 'alexsb', 'xx'}
    
    # update迭代着增加
    set1.update('fdsafgsd')
    print(set1)# {'太白金星', '三粗', 'a', 'd', '吴老师', '武大', 'g', '景女神', 's', 'f', 'alexsb'}
    #
    
    set1 = {'太白金星', '景女神',  '武大', '三粗', 'alexsb', '吴老师'}
    
    
     #remove
     remove 按照元素删除
     set1.remove('alexsb')
    
    # pop 随机删除
    set1.pop()
    print(set1)

    3.关系测试:

    #  交集
    set1 = {1, 2, 3, 4, 5}
    set2 = {4, 5, 6, 7, 8}
    print(set1 & set2)  #{4, 5}
    
     # 并集:
    print(set1 | set2)  #{1, 2, 3, 4, 5, 6, 7, 8}
    
    
    # 差集 -
    print(set1 - set2)  #{1, 2, 3}
    
    # 反交集
    print(set1 ^ set2)  #{1, 2, 3, 6, 7, 8}
    
    
    # 子集
    set1 = {1,2,3}
    set2 = {1,2,3,4,5,6}
    print(set1 < set2)   True
    
    
    # # 超集
    print(set2 > set1) True

    3.集合的列表去重

    l1 = [1,'太白', 1, 2, 2, '太白',2, 6, 6, 6, 3, '太白', 4, 5, ]
    set1 = set(l1)
    l1 = list(set1)
    print(l1)   #[1, 2, 3, 4, '太白', 6, 5]

     4.is id == 三种的区别

    # == 比较的是两边的值是否相等
    # l1 = [1, 2, 3]
    # l2 = [1, 2, 3]
    # print(l1 == l2)
    
    
    
    # id 是内存地址
    # i = 100
    # s = 'alex'
    # print(id(i))
    # print(id(s))
    
    # is 判断的是内存地址是否相同
    # l1 = [1, 2, 3]
    # l2 = [1, 2, 3]
    # print(id(l1))
    # print(id(l2))
    # print(l1 is l2)

    5.深浅COPY

    总得一句话: 
    浅copy:list,dict 嵌套的可变数据类型是同一个
    深copy:list,dict嵌套的可变的数据类型不是同一个
    
    # 浅copy
    l1 = [1, 2, 3, [22, 33]]
    l2 = l1.copy()
    l1.append(666)
    print(l1,id(l1))   #[1, 2, 3, [22, 33], 666] 4805704
    print(l2,id(l2)) #[1, 2, 3, [22, 33]] 6881608
    
    可得知:不可变的数据类型.直接增加,l2也不会有变化.
    
    
    l1 = [1, 2, 3, [22, 33]]
    l2 = l1.copy()
    l1[-1].append(666)
    print(l1) #[1, 2, 3, [22, 33, 666]]
    print(l2) #[1, 2, 3, [22, 33, 666]]
    
    因为最后一个嵌套列表是可变的.l2拷贝了l1的所有值.当l1的可变的数据类型增加一个数值时,,l2也是会跟着改变
    
    
    # 深copy
    需要增加import copy模块
    
    深copy时,可变的数据类型是单独的.不会改变
    
    
    # 深copy
    import copy
    l1 = [1, 2, 3, [22, 33]]
    l2 = copy.deepcopy(l1)
    # print(id(l1))
    # print(id(l2))
    l1[-1].append(666)
    print(l1)   # [1, 2, 3, [22, 33, 666]]
    print(l2)   # [1, 2, 3, [22, 33]]
    
    可以看到.跟浅copy不同.浅copy是会跟l1一样..深copy不受l1影响
  • 相关阅读:
    java多态课后作业
    java继承与接口课后作业
    java数组课后作业
    javaString课后作业
    Java类与对象课后作业
    java方法课后作业
    java基本知识课后作业
    读《大道至简》第二章有感
    课堂作业(字符串转化并计算)
    读《大道至简》第一章有感
  • 原文地址:https://www.cnblogs.com/zengluo/p/12871832.html
Copyright © 2011-2022 走看看