Python - 数据结构集合(set)

  • 简述

    在数学上,集合是不按任何特定顺序的项目的集合。Python 集类似于此数学定义,但具有以下附加条件。
    • 集合中的元素不能重复。
    • 集合中的元素是不可变的(不能修改),但集合作为一个整体是可变的。
    • python集中的任何元素都没有附加索引。因此它们不支持任何索引或切片操作。
  • 设置操作

    python 中的集合通常用于数学运算,如并、交、差和补等。我们可以创建一个集合,访问它的元素并执行这些数学运算,如下所示。

    创建一个集合

    通过使用 set() 函数或将所有元素放在一对花括号中来创建集合。

    例子

    
    Days=set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
    Months={"Jan","Feb","Mar"}
    Dates={21,22,17}
    print(Days)
    print(Months)
    print(Dates)
    

    输出

    执行上述代码时,会产生以下结果。请注意结果中元素的顺序是如何变化的。
    
    set(['Wed', 'Sun', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])
    set(['Jan', 'Mar', 'Feb'])
    set([17, 21, 22])
    
  • 访问集合中的值

    我们无法访问集合中的单个值。如上所示,我们只能一起访问所有元素。但是我们也可以通过遍历集合来获得单个元素的列表。

    例子

    
    Days=set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
     
    for d in Days:
       print(d)
    

    输出

    执行上述代码时,会产生以下结果 -
    
    Wed
    Sun
    Fri
    Tue
    Mon
    Thu
    Sat
    
  • 将项目添加到集合

    我们可以使用 add() 方法将元素添加到集合中。同样如所讨论的,新添加的元素没有附加特定的索引。

    例子

    
    Days=set(["Mon","Tue","Wed","Thu","Fri","Sat"])
     
    Days.add("Sun")
    print(Days)
    

    输出

    执行上述代码时,会产生以下结果 -
    
    set(['Wed', 'Sun', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])
    
  • 从集合中移除项目

    我们可以使用 discard() 方法从集合中删除元素。同样如所讨论的,新添加的元素没有附加特定的索引。

    例子

    
    Days=set(["Mon","Tue","Wed","Thu","Fri","Sat"])
     
    Days.discard("Sun")
    print(Days)
    

    输出

    执行上述代码时,会产生以下结果。
    
    set(['Wed', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])
    
  • 集合并集

    两个集合上的联合操作产生一个新集合,其中包含两个集合中所有不同的元素。在下面的示例中,两个集合中都存在元素“Wed”。

    例子

    
    DaysA = set(["Mon","Tue","Wed"])
    DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
    AllDays = DaysA|DaysB
    print(AllDays)
    

    输出

    执行上述代码时,会产生以下结果。请注意,结果只有一个“wed”。
    
    set(['Wed', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])
    
  • 集合的交集

    对两个集合的交集运算会产生一个新集合,该集合仅包含两个集合中的公共元素。在下面的示例中,两个集合中都存在元素“Wed”。

    例子

    
    DaysA = set(["Mon","Tue","Wed"])
    DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
    AllDays = DaysA & DaysB
    print(AllDays)
    

    输出

    执行上述代码时,会产生以下结果。请注意,结果只有一个“wed”。
    
    set(['Wed'])
    
  • 集差

    对两个集合进行差分运算会产生一个新集合,该集合仅包含第一个集合中的元素,而第二个集合中不包含任何元素。在下面的示例中,两个集合中都存在元素“Wed”,因此不会在结果集中找到它。

    例子

    
    DaysA = set(["Mon","Tue","Wed"])
    DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
    AllDays = DaysA - DaysB
    print(AllDays)
    

    输出

    执行上述代码时,会产生以下结果。请注意,结果只有一个“wed”。
    
    set(['Mon', 'Tue'])
    
  • 比较集

    我们可以检查给定的集合是另一个集合的子集还是超集。结果是 True 或 False,具体取决于集合中存在的元素。

    例子

    
    DaysA = set(["Mon","Tue","Wed"])
    DaysB = set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
    SubsetRes = DaysA <= DaysB
    SupersetRes = DaysB >= DaysA
    print(SubsetRes)
    print(SupersetRes)
    

    输出

    执行上述代码时,会产生以下结果 -
    
    True
    True