集合操作方法

‘’’
集合是一种数据类型,用于存储多个元素,并确保元素的唯一性
一、特点
1)元素时是无序的,不可通过索引或切片进行访问
2)元素不重复,即唯一性,相同的元素只会在集合中出现一次
3)使用{}或set()函数定义集合
4)集合有多种集合运算,可以并集(两个集合中所有的元素)、交集(两个集合中共有的元素)、
差集(第一个集合存在而第二个集合不存在的元素)等操作

‘’’
def set_op(isdisjoint=None, issubset=None, issuperset=None):

'''
    add(ele) 向集合中添加一个元素,如果ele已存在,则不产生任何影响
    格式: .add(ele)
'''

s = {5,1,2,88,'Hello'}
s.add(4)
print(s)
s.add(4)
print(s)

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

'''
    pop() 从集合中移除并返回任意一个元素,如果集合为空,则抛出错误
'''
s = {8,6,33,9,'hello',88}
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())

'''
    remove(elem) 从集合中删除元素elem,如果elem不存在于集合中则报错
'''
s = {8,6,33,9,'hello',88}
print(s.remove(8)) #返回None
print(s)
# s.remove(7)#如果elem不存在于集合中则报错

'''
    discard(elem) 从集合中删除元素elem,如果elem不存在则什么也不做
'''
s = {8,6,33,9,'hello',88}
print(s.discard(8)) #返回None
print(s)
s.discard(7)
'''
    clear(elem) 清空集合
'''
s = {8,6,33,9,'hello',88}
s.clear()
print(s) #返回空集合

'''
    判断两个集合是否不相交
    isdisjoint(other) 如果集合中没有与other共有的元素则返回True
'''
s = {1,2,3}
res = s.isdisjoint({4,5,6})
print(res)
res = s.isdisjoint({1,4,5,6})
print(res)

'''
    判断集合是否另一个集合的子集
    issubset(other) 检测集合中的每个元素是否都在other中
'''
s1 = {1,2,3}
s2 = {4,5,6,1,2,3}
res = s1.issubset({4,5,6})
print(res)
res = s1.issubset(s2)
print(res)
print(s1<=s2) #可以通过运算符<= 直接判断 是否子集
print(s1<s2) #可以通过运算符< 直接判断 是否真子集


'''
    判断集合是否另一个集合的超集
    issuperset(other) 检测集合中的每个元素是否都在other中
'''
s1 = {1,2,3}
s2 = {4,5,6,1,2,3}
res = s1.issuperset({4,5,6})
print(res)
res = s2.issuperset(s1)
print(res)
print(s1 >= s2)
print(s1 > s2)
print(s2 >= s1)#可以通过运算符> 直接判断 是否超集
print(s2 > s1)#可以通过运算符> 直接判断 是否真超集

'''
    并集
    union(*other) 返回一个新的集合,其中包含元集合及other指定的所有集合中的元素
    other可以指定多个集合
    并集也可以使用 | 进行运算
'''
s1 = {1,2,3}
s2 = {4,5,6,1,2,3}
s3 = {'Hello','Tom',(2,9)}
res = s1.union(s2)
print(res)
res = s1.union(s2,s3)
print(res)
res = s1|s2|s3 #并集也可以使用 |(或) 进行运算
print(res)

'''
    交集
    intersection(*other) 返回一个新的集合,其中包含元集合及other指定的所有集合中共有的元素
    other可以指定多个集合
    俗称你有我有的都留下,其他都不要
    交集也可以使用 &(和) 进行运算
'''
s1 = {1,2,3}
s2 = {4,5,6,1,2,3}
s3 = {'Hello','Tom',(2,9)}
res = s1.intersection(s2)
print(res)
res = s1.intersection(s2,s3)
print(res)
res = s1 & s2 & s3 #交集也可以使用 &(和) 进行运算
print(res)

'''
    差集
    difference(*other) 返回一个新的集合,其中包含元集合中other指定的所有集合中不存在的元素
    other可以指定多个集合
    俗称我有你没有的留下
    差集也可以使用 - 进行运算
'''
s1 = {1,2,3,7,10}
s2 = {4,5,6,1,2,3}
s3 = {'Hello','Tom',(2,9)}
res = s1.difference(s2)
print(res)
res = s1.difference(s2,s3)
print(res)
res = s1 - s2 - s3 #差集也可以使用 - 进行运算
print(res)

'''
    对称差集
    symmetric_difference(*other) 返回一个新的集合,
    其中元素或属于元集合或属于other指定的其他集合,但不能同时属于两者
    other可以指定多个集合
    俗称你有我有的都不要,其他的留下
'''
s1 = {1,2,3,7,10}
s2 = {4,5,6,1,2,3}
s3 = {'Hello','Tom',(2,9)}
res = s1.symmetric_difference(s2)
print(res)
res = s1.symmetric_difference(s3)
print(res)
# res = s1 ∧ s2
print(res)