集合:Python语言提供的一种内置数据结构,与列表、字典一样都属于可变类型的序列
集合是没有value的字典
集合的创建方式
1、直接{} ------s={'Python','hello',90}
2、使用内置函数set()
'''第一种创建方式使用{}'''
s={1,2,2,3,4,5,5}
print(s)#{1, 2, 3, 4, 5} 集合中的元素不允许重复
print(type(s))#<class 'set'>
'''第二种创建方式使用set()'''
s=set(range(6))
print(s)#{0, 1, 2, 3, 4, 5}
print(type(s))#<class 'set'>
print(set([3,4,53,85]))#{85, 3, 4, 53} 集合中的元素是无序的
print(set((3,4,2)))#{2, 3, 4}
print(set('Python'))#{'o', 'h', 'P', 't', 'y', 'n'}
print(set({3,'er',5}))#{'er', 3, 5}
print(set())#set()
定义空集合必须用s=set()
集合的相关操作
判断操作------in或not in
新增操作
1、调用add()方法,一次添中一个元素
2、调用update()方法至少添加一个元素
删除操作
1、调用remove()方法,一次删除一个指定元素,如果指定的元素不存在抛出KeyError
2、调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不抛出异常
3、调用pop()方法,一次只删除一个任意元素
4、调用clear()方法,清空集合
'''新增操作'''
s={10,20,30.444,66}
s.add(2)
print(s)#{2, 66, 10, 20, 30.444}
s.update({3,12})#字典
print(s)#{2, 66, 3, 10, 12, 20, 30.444}
s.update([1,6])#列表
print(s)#{1, 2, 66, 3, 6, 10, 12, 20, 30.444}
s.update((7,8,9))#元组
print(s)#{1, 2, 66, 3, 6, 7, 8, 9, 10, 12, 20, 30.444}
'''删除操作'''
s.remove(10)
print(s)#{1, 2, 66, 3, 6, 7, 8, 9, 12, 20, 30.444}
#s.remove(400)
#print(s)#KeyError: 400
s.discard(2)
print(s)#{1, 66, 3, 6, 7, 8, 9, 12, 20, 30.444}
s.discard(5)#不会抛出异常
print(s)#{1, 66, 3, 6, 7, 8, 9, 12, 20, 30.444}
s.pop()#pop方法不能添加参数
print(s)#{66, 3, 6, 7, 8, 9, 12, 20, 30.444}---随机删除
s.clear()
print(s)#set()
集合间的关系
1、两个集合是否相等----可以使用运算符==或!=进行判断
2、一个集合是否是另一个集合的子集----可以调用方法issubset进行判断
3、一个集合是否是另一个集合的超集----可以调用issuperset进行判断
4、两个集合是否没有交集----可以调用方法isdisjoint进行判断
'''集合间的关系'''
s1={10,20,30,40}
s2={20,10,40,30}
print(s1==s2)#True
print(s1!=s2)#False
s3={10,20}
s4={10,20,30}
s5={10,60}
print(s3.issubset(s4))#True
print(s5.issubset(s4))#False
print(s4.issuperset(s3))#True
print(s4.issuperset(s5))#False
print(s4.isdisjoint(s5))#False 有交集为False
集合的数学操作
1、交集操作
s1={10,20,30,40}
s2={10,20,50,60}
print(s1.intersection(s2))#{10, 20}
print(s1 & s2)#{10, 20} intersection()与&等价,交集操作
2、并集操作
s1={10,20,30,40}
s2={10,20,50,60}
print(s1.union(s2))#{40, 10, 50, 20, 60, 30}
print(s1|s2)#{40, 10, 50, 20, 60, 30} union()与|等价,并集操作
3、差集操作
s1={10,20,30,40}
s2={10,20,50,60}
print(s1.difference(s2))#{40, 30}
print(s2.difference(s1))#{50, 60}
print(s1-s2)#{40, 30} difference和-等价,差集操作
4、对称差集操作
s1={10,20,30,40}
s2={10,20,50,60}
print(s1.symmetric_difference(s2))#{40, 50, 60, 30}
print(s1^s2)#{40, 50, 60, 30} symmetric_difference()与^等价, 对称差集操作
集合生成式
用于生成集合的公式{i*i for i in range(1,10)}-------将{}修改为[]就是列表表达式,没有元组生成式