Python 集合相关知识

Python 基础数据类型之:集合 set

  1. 概念:集合是一种容器型数据类型,它要求里面的元素是不可变的数据,但它本身是可变的数据类型。集合是无序的,集合里的元素都是唯一的。

  2. 格式:{元素,元素,元素},与字典的区别是里面的元素并非键值对。

    set1={'amw',1,5,'kvi',True,False,'神力','视图'}
    print(set1,type(set1))		# 每次打印出来的内容顺序都不同
    >>>{False, 1, '神力', 5, '视图', 'amw', 'kvi'} <class 'set'>
    
    # 构造空集合方法
    set1 = set()
    print(set1)  	>>><class 'set'>
    
  3. 集合元素的增加:

    • set.add()方法:增加一个元素。
      set1={'amw',1,5,'kvi',True,False,'神力','视图'}
      set1.add(789)
      print(set1)
      >>>{False, 1, 5, 'amw', '神力', 'kvi', '视图', 789}
      
    • set.update()方法:迭代着增加几个元素,相同元素直接去重。
      set1={'amw',1,5,'kvi',True,False,'神力','视图'}
      set1.update('diensnd')		# 增加进去2个'd',但最终只有一个。
      print(set1)
      >>>{False, 1, 'i', 'amw', 5, 's', 'd', '神力', '视图', 'kvi', 'n', 'e'}
      
  4. 集合元素的删除:集合是无序的,所以无法用索引删除

    • set.remove()方法:删除一个指定元素
    • set.pop()方法:随机删除一个元素。
    • set.clear()方法:清空集合。
    • del set:删除整个集合。
  5. 作用(用法):

    • 列表的去重:将有重复值的列表转换成集合,直接会去除重复值。
    • 但是用这种方法去重列表内容,将会打乱顺序。
      list1 = ['amw', 1, 5, 'kvi', True, False, '神力', '视图', '神力', '视图']
      print(list1)
      >>>['amw', 1, 5, 'kvi', True, False, '神力', '视图', '神力', '视图']
      set1 = set(list1)
      print(set1)
      >>>{False, 1, 5, 'kvi', 'amw', '神力', '视图'}
      
    • 关系测试:交集、并集、差集……
      • 交集:(& 或者 intersection)
        set1 = {1, 2, 4, 5}
        set2 = {4, 5, 7, 8}
        print(set1 & set2)
        >>>{4, 5}
        print(set1.intersection(set2))
        >>>{4, 5}
        
      • 并集:(| 或者 union)
          set1 = {1, 2, 4, 5}
        set2 = {4, 5, 7, 8}
          print(set1 | set2)
        >>>{1, 2, 4, 5, 7, 8}
          print(set1.union(set2))
        >>>{1, 2, 4, 5, 7, 8}
        
      • 差集:(- 或者 difference)
        set1 = {1, 2, 4, 5}
        set2 = {4, 5, 7, 8}
        print(set1 - set2)
        >>>{1, 2}
        print(set2 - set1)
        >>>{8, 7}
        print(set1.difference(set2))
        >>>{1, 2}
        print(set2.difference(set1))
        >>>{8, 7}
        
      • 反交集:(^ 或者 symmetric_difference)
        set1 = {1, 2, 4, 5}
        set2 = {4, 5, 7, 8}
        print(set1 ^ set2)
        >>>{1, 2, 7, 8}
        print(set1.symmetric_difference(set2))
        >>>{1, 2, 7, 8}
        
      • 子集与超集:(>或者issubset,<或者issuperset)
        set1 = {4, 5}
        set2 = {4, 5, 7, 8}
        print(set1 < set2)
        print(set1.issubset(set2))
        # 以上判断是否为子集
        print(set2 > set1)
        print(set2.issuperset(set1))
        # 以上判断是否为超集
        
    • frozenset不可变集合,让集合变成不可变类型:
上一篇:如何合并HashSet?


下一篇:基本数据-集合