集合
集合是可变数据类型,集合是没有value的字典。
存储单个元素,集合中的元素不允许重复,无序。
一、创建集合
(1)使用{}
#代码
s={1,2,4,6,2,1,64}#存储单个元素 集合中的元素不允许重复 无序
print(s)
#结果
{64, 1, 2, 4, 6}
(2)内置函数set()
#使用内置函数set()
s1=set(range(6))
print(s1,type(s1))
#结果
{0, 1, 2, 3, 4, 5} <class 'set'>
(3)将其他数据类型转换成集合
将列表转成集合
#将列表转成集合,同时去掉重复元素
s2=set([23,45,345632,45,3])
print(s2,type(s2))
#结果
{345632, 3, 45, 23} <class 'set'>
将元组转成集合
#元组
s3=set((23,456,1,35))
print(s3,type(s3))
#结果
{456, 1, 35, 23} <class 'set'>
将字符串转成集合
#字符串序列
s4=set('python')
print(s4,type(s4))
#结果
{'n', 'y', 'p', 'h', 'o', 't'} <class 'set'>
集合转集合
#集合转集合
s5=set({34,65,25,34,3,25})
print(s5,type(s5))
#结果
{65, 34, 3, 25} <class 'set'>
定义一个空集合
直接用{},会定义成空字典,所以用内置函数定义
#定义一个空集合
s6={} #dict字典类型
print(type(s6))
s7=set()
print(type(s7))
#结果
<class 'dict'>
<class 'set'>
二、集合的相关操作
(1)判断操作
#代码
s={10,20,30,40,50,60}
print(10 in s)
print(10 not in s)
#结果
True
False
(2)新增
两种方式
① add()
一次添加一个元素,无序,加在任意位置
s.add(80)
print(s)
②update()
一次至少添加一个
可以把集合、列表、元组都添加进去
#一次至少添加一个
s.update({90,34})
print(s)
s.update([78,45,23])
s.update((23,249,23))
print(s)
(3)删除
① remove()
一次删除一个元素,删除一个不存在的元素时,会抛出异常
s.remove(78)
#s.remove(555555) KeyError: 555555 删除一个没有的会抛出异常
② discard()
一次删除一个元素,删除一个不存在的元素时,不会抛出异常
s.discard(555555) #删除一个没有的不会抛出异常
s.discard(45)
③ pop()
随便删除一个元素,不可以指定参数
s.pop()
④ clear()
清空集合当中的元素
s.clear() #清空集合当中的元素
三、集合之间的关系
(1)判断两个集合是否相等
元素相同,就相等
s={10,20,30,40}
s2={20,30,40,50}
print(s==s2)
print(s!=s2)
False
True
(2)判断一个集合是否是另一个集合的子集
s1={10,20,30,40,50,60,70,80,90}
s2={10,20}
s3={34,65}
print(s2.issubset(s1))
print(s3.issubset(s1))
(3)判断一个集合是否是另一个集合的超集
print(s1.issuperset(s2))
print(s1.issuperset(s3))
(4)判断两个集合是否有交集
print(s2.isdisjoint(s3))
四、集合的数学操作
(1)交
两种方式
s1={10,20,30,40}
s2={20,30,40,50,60}
print(s1.intersection(s2))
print(s1 & s2)
(2)并
两种方式,会去掉重复元素
print(s1.union(s2)) #去掉重复元素
print(s1 | s2)
(3)差
两种方式
print(s1.difference(s2))
print(s1-s2)
print(s2.difference(s1))
(4) 对称差
两种方式,去掉两个集合都有的元素
print(s1.symmetric_difference(s2))
print(s1^s2)
五、集合生成式
元组是不可变序列,所以元组没有生成式
#列表生成式
lst=[i*i for i in range(6)]
print(lst)
#集合生成式 将方括号改成花括号
s={i*i for i in range(6)}
print(s)