- 创建集合(两种方法)
- 判断元素是否存在 (not)in
- 增 s.add() s.update()
- 删 s.remove() s.discard() s.pop() s.clear()
- 集合间的关系(相等,是子集,是超集,有交集)
s1==s2
s1.issubset(s2)
s1.issuperset(s2)
s1.isdisjoint(s2) - 集合的数学操作 (求交,求并,求差,求对称差)
s1.intersection(s2) == s1 & s2
s1.union(s2) == s1 | s2
s1.difference(s2) == s1 - s2
s1.symmetric_difference(s2) == s1 ^ s2 - 集合生成式
# ==================== 创建集合
# {,,,} 集合中的元素有重复会自动合并
s = {1,2,2,3,4,5,6,6}
print(s) # {1, 2, 3, 4, 5, 6}
# 内置函数set()
s1 = set(range(6))
print(s1) # {0, 1, 2, 3, 4, 5}
s = set([1,2,2,6]) # 把列表转集合
print(s, type(s)) # {1, 2, 6} <class 'set'>
s = set((1,2,2,65)) # 把元组转集合
print(s, type(s)) # {65, 1, 2} <class 'set'>
# so, 集合是无序的
s = set('python')
print(s, type(s)) # {'o', 'h', 'p', 'n', 'y', 't'} <class 'set'>
s = set({1,2,2,6})
print(s, type(s)) # {1, 2, 6} <class 'set'>
# 空集合,区别于空字典
s = set()
print(type(s)) # <class 'set'>
s1 = {}
print(type(s1)) # <class 'dict'>
# ==================== 判断元素是否存在,增删
s = {1,2,3}
print(1 in s) # True
s.add(7) # 一次加一个元素
print(s) # {1, 2, 3, 7}
s.update({'集合',22}) # 一次加多个元素
print(s) # {1, 2, 3, 22, 7, '集合'}
s.update(['列表',33])
print(s) # {1, 2, 3, 33, 22, 7, '集合', '列表'}
s.update(('元组',66))
print(s) # {1, 2, 3, 66, 7, 22, '列表', '元组', 33, '集合'}
s.remove('集合')
print(s) # {1, 2, 3, 66, 7, 22, '元组', 33, '列表'}
# s.remove('111') # KeyError
s.discard('列表')
s.discard(111)
print(s) # {1, 2, 3, 66, '元组', 7, 22, 33}
s.pop() # 一次删除一个任意元素,不能写参数
# s.pop(22) # TyprError
print(s) # {2, 3, 66, 7, 22, 33, '元组'}
s.clear()
print(s) # set()
# ==================== 集合间的关系
# 相等 == !=
s1 = {1,2,3,4}
s2 = {2,4,3,3,1}
print(s1==s2) # True
# 子集 .issubset()
s3 = {1,2}
s4 = {5,2}
print(s3.issubset(s1)) # True
print(s4.issubset(s1)) # False
# 超集 .issuperset()
print(s1.issuperset(s3)) # True
print(s1.issuperset(s1)) # True
# 交集 注意:有交集为 False
print(s4.isdisjoint(s1)) # False
# ==================== 集合的数学操作
s1 = {1,2,3,4}
s2 = {2,3,5,6,7}
# 求交集
print(s1.intersection(s2)) # {2,3}
print(s1 & s2) # {2,3}
# 求并集
print(s1.union(s2)) # {1, 2, 3, 4, 5, 6, 7}
print(s1 | s2) # {1, 2, 3, 4, 5, 6, 7}
# 求差集 (注意顺序)
print(s1.difference(s2)) # {1, 4}
print(s1 - s2) # {1, 4}
# 求对称差集
print(s1.symmetric_difference(s2)) # {1, 4, 5, 6, 7}
print(s1 ^ s2) # {1, 4, 5, 6, 7}
# ==================== 集合生成式
# (回忆:列表)
lst = [ i*i for i in range(6)]
print(lst) # [0, 1, 4, 9, 16, 25]
# 集合生成式
s = { i*i for i in range(6)}
print(s) # {0, 1, 4, 9, 16, 25}