Skip to content

集合操作

集合操作

添加操作

  • add(ele) 向集合中添加一个元素,如果元素存在则不产生任何影响
    s = {1, 2, 3}
    
    s.add(4)
    print(s)
    s.add("Hello")
    s.add("Hello")
    print(s)
    
  • update(others) 更新集合,添加来自 others 中的所有元素, others 是一个可迭代对象,如果数据在集合中存在则不更新。
    s = {1, 2, 3}
    
    s.update((4,5,6))
    print(s)
    s.update([5,6,7])
    print(s)
    s.update({6,7,8,9})
    print(s)
    

删除操作

  • pop() 从集合中移除并返回任意一个元素,如果集合为空,则抛出错误
    s = {1, 2, 3}
    
    print(s.pop())
    print(s)
    print(s.pop())
    print(s)
    print(s.pop())
    print(s)
    print(s.pop())
    
  • remove(elem) 从集合中移除元素 elem。 如果 elem 不存在于集合中则抛出错误。
    s = {1, 2, 3}
    
    print(s.remove(1))
    print(s)
    print(s.remove(3))
    print(s)
    print(s.remove(5))
    
  • discard(elem) 如果元素 elem 存在于集合中则将其移除,如果 elem 不存在,则什么也不做
    s = {1, 2, 3}
    
    s.discard(1)
    print(s)
    s.discard(3)
    print(s)
    s.discard(5)
    
  • clear() 清空集合
    s = {1, 2, 3}
    s.clear()
    print(s)
    

集合数据操作

判断两个集合是否不相交

  • isdisjoint(other) 如果集合中没有与 other 共有的元素则返回 True。 当且仅当两个集合的交集为空集合时,两者为不相交集合。
    s = {1, 2, 3}
    
    print(s.isdisjoint({4, 5, 6}))
    print(s.isdisjoint({3, 4, 5}))
    

判断集合是否是另一个集合的子集

  • issubset(other) 检测是否集合中的每个元素都在 other 之中。
    s = {1, 2, 3}
    
    # 判断 s 是否为 other参数的子集
    print(s.issubset({1, 2, 3}))
    print(s.issubset({1, 2, 3, 4}))
    print(s.issubset({3, 4, 5}))
    print("*" * 10)
    # 也可以通过运算符 <= 直接判断
    print(s <= {1, 2, 3})
    print(s <= {1, 2, 3, 4})
    print(s <= {3, 4, 5})
    print("*" * 10)
    
    # 判断是否为真子集
    print(s < {1, 2, 3})
    print(s < {1, 2, 3, 4})
    print(s < {3, 4, 5})
    

判断集合是否是另一个集合的超集

  • issuperset(other) 检测是否 other 中的每个元素都在集合之中。
    s = {1, 2, 3, 4}
    
    # 判断 s 是否为 other参数的超集
    print(s.issuperset({1, 2, 3}))
    print(s.issuperset({1, 2, 3, 4}))
    print(s.issuperset({3, 4, 5}))
    print("*" * 10)
    # 也可以通过运算符 >= 直接判断
    print(s >= {1, 2, 3})
    print(s >= {1, 2, 3, 4})
    print(s >= {3, 4, 5})
    print("*" * 10)
    
    # 判断是否为真超集
    print(s > {1, 2, 3})
    print(s > {1, 2, 3, 4})
    print(s > {3, 4, 5})
    

并集

  • union(*other) 返回一个新集合,其中包含来自原集合以及 others 指定的所有集合中的元素,other 可以指定多个集合。
    s1 = {1, 2, 3, 4}
    s2 = {3, 4, 5, 6}
    s3 = {5, 6, 7, 8}
    print(s1.union(s2))
    print(s1.union(s2,s3))
    # 也可以使用 | 进行集合并集运算
    print(s1 | s2)
    print(s1 | s2 | s3)
    

交集

  • intersection(*others) 返回一个新集合,其中包含原集合以及 others 指定的所有集合中共有的元素。
    s1 = {1, 2, 3, 4}
    s2 = {3, 4, 5, 6}
    s3 = {5, 6, 7, 8}
    print(s1.intersection(s2))
    print(s1.intersection(s2, s3))
    print(s1.intersection(s3))
    print("*" * 10)
    # 也可以使用 & 进行集合交集运算
    print(s1 & s2)
    print(s1 & s2 & s3)
    print(s1 & s3)
    

差集

  • difference(*others) 返回一个新集合,包含原集合中在 others 指定的其他集合中不存在的元素。
    s1 = {1, 2, 3, 4}
    s2 = {3, 4, 5, 6}
    s3 = {5, 6, 7, 8}
    print(s1.difference(s2))
    print(s1.difference(s2, s3))
    print(s1.difference(s3))
    print("*" * 10)
    # 也可以使用 - 进行集合差集运算
    print(s1 - s2)
    print(s1 - s2 - s3)
    print(s1 - s3)
    

对称差集

  • symmetric_difference(other) 返回一个新集合,其中的元素或属于原集合或属于 other 指定的其他集合,但不能同时属于两者。
    s1 = {1, 2, 3, 4}
    s2 = {3, 4, 5, 6}
    s3 = {5, 6, 7, 8}
    print(s1.symmetric_difference(s2))
    print(s1.symmetric_difference(s3))
    print("*" * 10)
    # 也可以使用 ^ 进行集合对称差集运算
    print(s1 ^ s2)
    print(s1 ^ s3)