zoukankan      html  css  js  c++  java
  • 集合类型内置方法与总结

    集合类型内置方法

    用途:数学里的集合

    定义方式:{ }内用逗号隔开多个元素,元素只能是不可变类型,有两个特 征 * 1.会删除重复值 * 2.会打乱集合内的值

    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    print(hobby_set)
    
    #自定义set方法
    hobby_list = ['reading','running','sleeping','singing','sleeping']
    def set1(hobby_list) :
        s = set()
        for i in hobby_list :
            s.add(i)
        print(s)
    set1(hobby_list)
    
    {'singing', 'running', 'reading', 'sleeping'}
    

    常用操作和内置方法:

    优先掌握

    # 长度len
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    print(len(hobby_set))
    
    4
    
    # in 和 not in
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    print('reading' in hobby_set)
    print('read' in hobby_set)
    
    True
    False
    
    # | 并集 union
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    print(hobby_set | hobby_set2)
    print(hobby_set.union(hobby_set2))
    
    {'reading', 'sleeping', 'comic', 'swimming', 'running', 'singing'}
    {'reading', 'sleeping', 'comic', 'swimming', 'running', 'singing'}
    
    # & 交集 intersection
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    print(hobby_set & hobby_set2)
    print(hobby_set.intersection(hobby_set2))
    
    {'running', 'reading'}
    {'running', 'reading'}
    
    # - 差集 differdnce
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    print(hobby_set - hobby_set2)
    print(hobby_set2 - hobby_set)
    print(hobby_set.difference(hobby_set2))
    
    {'singing', 'sleeping'}
    {'comic', 'swimming'}
    {'singing', 'sleeping'}
    
    # ^ 对称差集 symmetric_difference
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    print(hobby_set ^ hobby_set2)
    print(hobby_set2 ^ hobby_set)
    print(hobby_set.symmetric_difference(hobby_set2))
    
    {'sleeping', 'comic', 'swimming', 'singing'}
    {'sleeping', 'comic', 'swimming', 'singing'}
    {'sleeping', 'comic', 'swimming', 'singing'}
    
    # ==
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    print(hobby_set == hobby_set2)
    
    False
    
    # 父集 :>  >=  issuperset
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    hobby_set3 = {'reading','sleeping'}
    print(hobby_set > hobby_set3)
    print(hobby_set2.issuperset(hobby_set3))
    
    True
    False
    
    # 子集 <  <=  issubset
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    hobby_set3 = {'reading','sleeping'}
    print(hobby_set < hobby_set2)
    print(hobby_set3 < hobby_set2)
    print(hobby_set3.issubset(hobby_set))
    
    False
    False
    True
    

    需要掌握

    # add
    s = {1,3,6}
    print(s.add(4))
    print(s)
    s.add('haha')
    print(s)
    
    None
    {1, 3, 4, 6}
    {1, 3, 4, 6, 'haha'}
    
    # remove
    s = {1,3,6}
    s.remove(6)
    print(s)
    # s.remove(9)   报错
    # print(s)
    
    {1, 3}
    
    # difference_update
    s = {1,3,6,9,4}
    s2 ={1,3,6,5,8}
    print(s.difference_update(s2))
    print(s)
    print(s2)
    
    None
    {4, 9}
    {1, 3, 5, 6, 8}
    
    # discard
    s = {1,3,6,5,8,2}
    print(s.discard(3))
    print(s.discard(700)) #不会报错
    print(s)
    
    None
    None
    {1, 2, 5, 6, 8}
    
    # isdisjoint  集合没有共同的部分返回True,否则返回False
    s = {1,3,6,9,4}
    s2 ={1,3,6,5,8}
    s3 = {7}
    print(s.isdisjoint(s2))
    print(s.isdisjoint(s3))
    
    False
    True
    

    存一个值or多个值 : 多个值

    有序 or 无序 :无序

    可变 or 不可变 :可变

    s = {1,2}
    print(s)
    print(id(s))
    s.add(3)
    print(s)
    print(id(s))
    
    {1, 2}
    2375254726696
    {1, 2, 3}
    2375254726696
    

    总结

    存值个数区分(掌握)

    存值个数 数据类型
    一个值: 整型、浮点型、字符串
    多个值: 列表、字典、元组、集合

    按可变不可变区分(掌握)

    可变or不可变 数据类型
    可变: 列表、字典、集合
    不可变: 整型、浮点型、字符串

    有序无序区分(掌握)

    有序or无序 数据类型
    有序: 列表、元组、字符串
    无序: 字典、集合

    浅拷贝和深拷贝

    拷贝

    内置方法

    lis = [1,3,6,[4,5]]
    lis2 = lis.copy()
    print(lis)
    print(lis2)
    lis.append(7)
    print(lis)
    print(lis2)
    lis[3][0] = 9
    print(lis)
    print(lis2)
    
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5], 7]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [9, 5], 7]
    [1, 3, 6, [9, 5]]
    

    浅拷贝

    import copy
    lis = [1,3,6,[4,5]]
    lis2 = copy.copy(lis)
    print(lis)
    print(lis2)
    lis.append(7)
    print(lis)
    print(lis2)
    lis[3][0] = 9
    print(lis)
    print(lis2)
    
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5], 7]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [9, 5], 7]
    [1, 3, 6, [9, 5]]
    

    深拷贝

    import copy
    lis = [1,3,6,[4,5]]
    lis2 = copy.deepcopy(lis)
    print(lis)
    print(lis2)
    lis.append(7)
    print(lis)
    print(lis2)
    lis[3][0] = 9
    print(lis)
    print(lis2)
    
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5], 7]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [9, 5], 7]
    [1, 3, 6, [4, 5]]
    

    特殊的

    import copy
    
    t1 = (1,2,3,4,5)
    print(id(t1))
    t2 = copy.deepcopy(t1)
    print(id(t2))
    
    2375254489752
    2375254489752
    
    import copy
    
    t1 = (1,2,3,4,[1,2])
    print(id(t1))
    t2 = copy.deepcopy(t1)
    print(id(t2))
    
    2375254490104
    2375254276144
    
    lis = [1,2,3]
    t1 = (1,2,lis)
    print(t1)
    lis.append(4)
    print(lis)
    print(t1)
    
    (1, 2, [1, 2, 3])
    [1, 2, 3, 4]
    (1, 2, [1, 2, 3, 4])
    
  • 相关阅读:
    导入Excel的时候使用TransactionScope事务控制来进行数据
    【项目相关】MVC中将WebUploader进行封装
    【项目相关】MVC中使用WebUploader进行图片预览上传以及编辑
    Java学习-2 其它公司合作项目源码分析
    Linux开发环境搭建
    新春畅想未来
    Java学习-1 框架、测试及学习误区
    Java学习-1 Myeclipse与Idea
    又到了一年一度圣诞新年立志许愿的时候了
    WebStorm神器啊,一旦上手根本停不下来
  • 原文地址:https://www.cnblogs.com/WilliamKong94/p/10842359.html
Copyright © 2011-2022 走看看