Python 语言-第四章典型的数据结构之集合

4.5 集合(set)

4.5.1 认识集合

  • python 提供的一种内置数据结构,是一些不可重复的无序组合。分为可变集合和不可变集合。
    • 缺省条件下创造的都是可变集合
  • 属于可变类型序列
  • 集合中是没有 value 的字典
  • 集合的可以作为字典的键
  • 集合示意图:
    Python 语言-第四章典型的数据结构之集合
    • 与字典一样运用 hash 进行无序保存

4.5.2 创建集合

  • 通过花括号{}创建可变集合

    • 例如:

      set1 = {1,2,3,4,5}
      
  • 通过set()内置函数创建可变集合

    • 例如:

      set1 = set(range(1,6))
      
    • set()方法还可以将其他类型的数据转换为集合类型 ,并去重数据

      • 例如:

        print(set([1,3,9,6,7,3]))
        print(set('Python'))
        
        {1, 3, 6, 7, 9}
        {'y', 'P', 'h', 'o', 'n', 't'}
        
  • 使用forzenset()函数创建不可变集合

    • 例如:

      s = frozenset([1, 2, 3, 'a', 1])
      print(s)
      
      frozenset({1, 2, 3, 'a'})
      
    • 不可变集合应用之一就是用来作为字典的键

  • 创建空集合

    • 在 python中,创造空集合只能用 set() 而不能用{ },如果使用{ },则会创建一个空字典。

4.5.3 集合元素的基本操作

  • 集合元素的操作只针对可变集合

4.5.3.1 判断操作

  • 使用运算符 in 或者 not in 进行判断,结果为布尔类型

4.5.3.2 新增操作

  • 调用add()方法:添加一个元素
  • 调用update()方法:至少添加一个元素

4.5.3.3 删除操作

  • 调用 remove()方法,删除一个指定元素,如果元素不存在会报 KetError 异常
  • 调用 discard()方法,删除一个指定元素,如果元素不存在不会报出异常
  • 调用pop()方法,只删除一个任意元素
  • 调用clear()方法

4.5.4 集合之间的关系

  • 判断两个集合是否相等: == 或者 !=
  • 判断前者是否是后者的子集:<或者issubset()
    • 真子集用运算符<=
  • 判断前者是否是后者的超集:>=或者issuperset()
    • 真超集用运算符>
  • 判断两个集合是否有交集:isdisjoint()

4.5.5 集合中的数学操作

  • 交集:&或者intersection()

    • 例如:

      s1 = {10,20,30,40}
      s2 = {20,30,40,50}
      print(s1 & s2)
      print(s1.intersection(s2))
      
      {40, 20, 30}
      {40, 20, 30}
      
  • 并集:|或者union()

  • 差集:-或者difference()

    • Python 语言-第四章典型的数据结构之集合
  • 对称差集:^或者symmetric_difference()

    • Python 语言-第四章典型的数据结构之集合

4.5.6 集合的并入

  • 使用运算符|=将后一个集合并入前一个集合

  • 例如:

    s1 = {10,20,30,40}
    s2 = {20,30,40,50}
    s1 |= s2
    print(s1)
    print(s2)
    
    {40, 10, 50, 20, 30}
    {40, 50, 20, 30}
    

4.5.7 集合的遍历

  • 使用 for 循环遍历即可

4.5.8 集合生成式

  • 作用:用于生成集合

  • 语法格式:

    {表示集合元素的表达式  for 自定义变量 in 可迭代对象}
    

4.5.9 集合其他常用方法

  • 适合所有集合的方法
    • set1.copy():用于复制集合set1,返回set1的一个副本
上一篇:1107 Social Clusters (30 分)1107 Social Clusters (30 分)(并查集)


下一篇:指数基金-各类型资产配置权重 & 估值区间的划分