• 集合set内部常用功能和使用方法-课堂笔记及课后总结


    set集合,是一个无序且不重复的元素集合。set集合由于使用到的不多,所以python内部没有为set提供语法糖,所以定义set的方法不像list,tuple有几种,定义set的方法只有一种:

    set1 = set(),set()中的参数可以为,字符串,列表,元组,字典或是另外一个集合。但是需要注意的是,使用字典作为参数时,set会取dict.keys()来作为参数

    使用字符串作为参数:

    str_set = set('parr')
    str_set
    {'p', 'r', 'a'}
    View Code

    使用列表作为参数:

    list_set = set(['parr','age','sex'])
    list_set
    {'sex', 'parr', 'age'}
    View Code

    使用元组作为参数:

    tuple_set = set(('parr','age','sex'))
    tuple_set
    {'sex', 'parr', 'age'}
    View Code

    使用字典作为参数:

    dic_set = set({'name':'parr','age':24,'sex':'man'})
    dic_set
    {'name', 'sex', 'age'}
    View Code

    使用另一个集合作为参数:

    set1 = set('parr')
    set2 = set(set1)
    set2
    {'p', 'r', 'a'}
    View Code

    集合类常用功能和方法:

    1、add:添加元素到集合中,重复的元素不添加到集合中

    add(self*args, **kwargs)

    set_a = set('parr')
    set_a.add('b')
    print(set_a)
    
    #屏幕打印:{'p', 'r', 'a', 'b'}
    View Code

    2、clear:清除集合中的所有元素

    clear(self*args, **kwargs)

    set_a = set('parr')
    set_a.clear()
    print(set_a)
    
    #屏幕打印:set(),表示集合已被清空
    View Code

    3、copy:浅拷贝(浅拷贝表示在内存中只开辟集合第一层的内存位置,其他的元素还是使用内存地址指向来做)

    copy(self*args, **kwargs)

    set_a = set('parr')
    set_b = set_a.copy()
    print(set_b)
    
    #屏幕打印:{'p', 'a', 'r'}
    View Code

    4、difference:集合的不同,A中存在的,B中不存在的

    difference(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('arr')
    set_diff = set_a.difference(set_b)
    print(set_diff)
    
    #屏幕打印:{'p'}
    View Code

    5、difference_update:从A中删除与集合B相同的元素,更新到A中

    difference_update(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('arr')
    set_a.difference_update(set_b)
    print(set_a)
    
    #屏幕打印:{'p'}
    View Code

    6、discard:从集合中移除指定的元素,不存在的元素不会报错

    discard(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('arr')
    set_a.discard('a')
    print(set_a)
    
    #屏幕打印:{'p', 'r'}
    View Code

    7、intersection:查找两个集合的交集并返回一个新的集合

    intersection(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('arr')
    result = set_a.intersection(set_b)
    print(result)
    
    #屏幕打印:{'a', 'r'}
    View Code

    8、intersection_update:取A、B两个集合的交集并更新到A中

    intersection_update(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('arr')
    set_a.intersection_update(set_b)
    print(set_a)
    
    #屏幕打印:{'r', 'a'}
    View Code

    9、isdisjoint:判断是否没有交集,没有则返回True,有则False

    isdisjoint(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('arr')
    result = set_a.isdisjoint(set_b)
    print(result)
    
    #屏幕打印:False
    View Code

    10、issubset:判断当前集合是否为另一个集合的子集,如果是则返回True,反之返回False

    issubset(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('arr')
    result = set_a.issubset(set_b)
    print(result)
    result = set_b.issubset(set_a)
    print(result)
    
    #屏幕打印:False
                     True
    View Code

    11、issuperset:判断当前集合是否为另一个集合的复集,如果是则返回True,反之返回False

    issuperset(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('arr')
    result = set_a.issuperset(set_b)
    print(result)
    result = set_b.issuperset(set_a)
    print(result)
    
    #屏幕打印:True
                     False
    View Code

    12、pop:删除当前集合中的元素(python3中删除从第一个元素开始),并返回这个元素,如果集合为空则报错key error

    pop(self*args, **kwargs)

    set_a = set('parr')
    print(set_a)
    result = set_a.pop()
    print(result)
    result = set_a.pop()
    print(result)
    result = set_a.pop()
    print(result)
    
    #屏幕打印:{'r', 'a', 'p'}
                         r
                         a
                         p
                                        
    View Code

    13、remove:删除当前集合中的指定元素,不存在报错

    remove(self*args, **kwargs)

    set_a = set('parr')
    set_a.remove('a')
    print(set_a)
    
    #屏幕打印:{'r', 'p'}
    View Code

    14、symmetric_difference:对称差集,与difference的区别在于,difference只会找A在B中不存在的,而symmetric_difference会找A在B中不存在的,同时也会反向找B在A中不存在的

    symmetric_difference(self*args, **kwargs)

    #如果set_b中不存在set_a中没有的元素则看不出与difference的差别:
    set_a = set('parr')
    set_b = set('arr')
    set_diff = set_a.symmetric_difference(set_b)
    print(set_diff)
    set_diff = set_a.difference(set_b)
    print(set_diff)
    #屏幕打印:{'p'}
                      {'p'}
    
    #如果set_b中存在set_a中没有的元素则能看出与difference的差别:
    set_a = set('parr')
    set_b = set('barr')
    set_diff = set_a.symmetric_difference(set_b)
    print(set_diff)
    set_diff = set_a.difference(set_b)
    print(set_diff)
    #屏幕打印:对称差集:{'b', 'p'}
                     差集:{'p'}
    View Code

    15、symmetric_difference_update:求对称差集并更新到A中

    symmetric_difference_update(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('barr')
    set_a.symmetric_difference_update(set_b)
    print(set_a)
    
    #屏幕打印:{'p', 'b'}
    View Code

    16、union:求两个集合的并集(就是将两个集合的所有元素组合在一起,组成一个新的集合)

    union(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('barr')
    result = set_a.union(set_b)
    print(result)
    
    #屏幕打印:{'a', 'p', 'r', 'b'}
    View Code

    17、update:将要传入的元素拆分后添加到集合中,元素可以是str、list、tuple、字典或另一个集合。字典还是只会取到keys。str会被拆分后放进去

    update(self*args, **kwargs)

    set_a = set('parr')
    set_b = set('hello')
    set_a.update([1,2,3])
    print('参数为列表:',set_a)
    set_a = set('parr')
    set_a.update((4,5,6))
    print('参数为元组:',set_a)
    set_a = set('parr')
    set_a.update({'7':'v1','8':'v2'})
    print('参数为字典:',set_a)
    set_a = set('parr')
    set_a.update('hello')
    print('参数为字符串:',set_a)
    set_a = set('parr')
    set_a.update(set_b)
    print('参数为另一个集合:',set_a)
    
    #屏幕打印: 参数为列表: {1, 2, 3, 'r', 'a', 'p'}
                      参数为元组: {4, 5, 'r', 'a', 6, 'p'}
                      参数为字典: {'7', 'r', 'a', 'p', '8'}
                      参数为字符串: {'o', 'e', 'r', 'a', 'p', 'h', 'l'}
                      参数为另一个集合: {'o', 'e', 'r', 'a', 'h', 'p', 'l'}
    View Code
  • 相关阅读:
    Java容器-引用分类与部分Map用法
    Java容器-引用数据类型排序+TreeSet、TreeMap底层实现
    JAVA容器-重点总结与深度解析
    JAVA容器-浅谈HashMap的实现原理
    JAVA容器-模拟LinkedList实现(双链表)
    JAVA容器-模拟ArrayList的底层实现
    在代码动态设置RelativeLayout的属性,比如layout_below
    java substring
    String StringBuffer StringBuilder
    线性布局通过适配器可以动态加载view
  • 原文地址:https://www.cnblogs.com/parr2017/p/7849826.html
Copyright © 2020-2023  润新知