1. 定义:由 (不同元素) 组成的集合,其中是一组无序的可hash的值,可以作为字典的key

2. 特性:将不同的值放到一起,不同的集合间来做关系运算,集合中的元素必须是不可变类型,没有重复的元素

set方法:
s = {1,3,6,'test',3,4,2,}
print(s,type(s))
结果:{1, 2, 3, 4, 6} <class 'set'>
m = set('hello')  -- 使用set,可在里面传入列表,将其遍历转换成集合
print(m)
结果:{'l', 'e', 'o', 'h'}
s.add('3')  add只能更新一个值
s.add(3)
print(s)
结果:{1, 2, 3, 4, 6, '3'}

s.clear()  - 清空集合
s.copy()  - 浅拷贝
s.pop()  - 随机删除
s.remove('test')  - 删除指定的值,若传入的值不存在会报错
s.discard('test')  - 删除指定的值,若传入值不存在 也不会报错

s= {3,4}
s.update((1,2))  更新集合
print(s)
结果:{1, 2, 3, 4}

将集合设置成不可变类型:
s = frozenset('hello')
print(s)
结果:frozenset({'l', 'o', 'e', 'h'})

3. 集合的交 ,差,并集,交差补集,空集,子集,父集

求交集和并集:
s1 = {1,3,6,4,2,}
s2 = {1,5,7,6,2,8,}
print(s1 & s2)
print(s1 | s2)
结果:
{1, 2, 6}
{1, 2, 3, 4, 5, 6, 7, 8}
求差集:
print(s1 - s2)
print(s2 - s1)
结果:
{3,4}
{8,5,7}
求交差补集:
print(s1 ^ s2)
结果:{3, 4, 5, 7, 8}

交集为空返回True:
s3 = {1,2}
s4 = {3,4}
print(s3.isdisjoint(s4))
结果:True

子集(s4是s3的子集,则返回True):
s3 = {1,2,3,4}
s4 = {3,4}
print(s4.issubset(s3))
结果:True

父集(s3是s4的父集,则返回True):
s3 = {1,2,3,4}
s4 = {3,4}
print(s3.issuperset(s4))
结果:True