特征
- 无序
集合中的元素没有任何顺序(集合中的元素没有先后之分,(1,2,3)和(2,3,1)是一样的) - 唯一
集合中的值不会重复(唯一) - 不可变
集合中可以使用整数,浮点数,布尔值,复数,字符串,元组,冰冻集合
创建集合
- 创建空集合
变量 = set()
EG1
实行结果:
{‘o’, ‘l’, ‘h’, ‘e’}
{‘o’, ‘l’, ‘h’, ‘e’}
EG2
创建一个含有一个元素的集合
- 创建多个数据的集合
变量 = {值,值…}
注意:集合是唯一性数据,所有相同的数据只会保留一份。
基本操作
集合不存在基本操作
成员检测
- 值 in 集合
检测某个值是否存在于集合当中 - 值 not in 集合
检测一个值是否不再集合当中
内置函数
- len()
计算集合的长度 - max()
获取集合中的最大值 - min()
获取集合中的最小值 - set()
创建空集合或者将其他数据转换为集合
操作
- set.add(x)
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
注意:直接改变原有集合 - s.update( x )
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典. x 可以有多个,用逗号分开。(二维列表为什么不能添加?)
注意:
s.update( {“字符串”} ) 将字符串添加到集合中,有重复的会忽略。
s.update( “字符串” ) 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。
直接改变原有集合 - set.remove(x)
将元素 x 添加到集合 s 中移除,如果元素不存在,则会发生错误。
注意:直接改变原有集合 - set.discard(x)
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。(是否只能删除一个元素,而列表和元祖等删除就发生错误)
注意:只能删除一个元素,不能删除多个,直接改变原有集合
实行结果:
TypeError: unhashable type: 'list’ - set.pop()
随机删除集合中的一个元素(没有随机删除,只是删除了第一个元素)
注意:直接改变原有集合 - 集合1.difference(集合2)
差集
返回值:集合
操作:获取存在于集合1但是不存在与集合2中的数据的集合 - 集合1.difference(集合2)
差集 更新
返回值:无 直接将结果赋值给集合1
操作:获取存在于集合1但是不存在与集合2中的数据的集合 - 集合1.intersection(集合2)
交集
返回值:集合
操作:获取即存在于集合1又存在于集合2中的数据组成的集合 - 集合1.intersection_update(集合2)
交集更新
返回值:None 直接将结果赋值给集合1
操作:获取即存在于集合1又存在于集合2中的数据组成的集合 - 集合1.union(集合2)
并集
返回值:集合
操作:将集合1和集合2中所有数据新建一个集合(去重) - 集合1.update(集合2)
并集更新
返回值:无 直接将结果赋值给集合1
操作:将集合1和集合2中所有数据新建一个集合(去重) - 集合1.issuperset(集合2)
检测一个集合是不是另外一个集合的超集
返回值:布尔值 - 集合1.issubset(集合2)
检测一个集合是不是另外一个集合的子集
返回值:布尔值 - 集合1.isdisjoint(集合)
检测2个集合是否不相交
返回值:布尔值 - 集合1.symmetric_difference(集合2)
对称差集操作
返回值:集合
操作:将集合1和集合2不相交的部分取出组成的新的集合 - 集合1.symmetric_difference(集合2)
对称差集更新操作
返回值:None 直接将结果赋值给集合1
操作:将集合1和集合2不相交的部分取出组成的新的集合
注意:
集合可以有任意数量的元素,它们可以是不同的类型(例如:数字、元组、字符串等)。但是,集合不能有可变元素(例如:列表、集合或字典)
冰冻集合/固定集合 frozenset
含义:冰冻集合就是一旦创建,不可以在进行任何修改的集合。
创建
- 创建空的冰冻集合
变量 = frozenset() - 创建多个元素的集合
变量 = frozenset(容器类数据)
冰冻集合的遍历
for 变量 in 冰冻集合:
使用变量
推导式:
- 普通的集合推导式
变量={i for i in 集合} - 带有判断条件的推导式
变量={i for i in 集合 if} - 多循环推导式
变量 = {i+j for i in 集合1 for j in 集合2} - 带有判断条件的多循环推导式
变量 = {i+j for i in 集合1 for j in 集合2 if 条件表达式}
案例
- a – b: 只找集合a中包含元素
实行结果:
{‘hello’} - a | b: 集合a或b中包含的所有元素
实行结果:
{‘2’, ‘r’, ‘3’, ‘c’, ‘e’, ‘d’, ‘1’, ‘w’, ‘q’} - a & b:集合a和b中都包含了的元素
实行结果:
{‘1’, ‘w’, ‘q’} - a ^ b:不同时包含于a和b的元素
实行结果:
{‘e’, ‘3’, ‘2’, ‘r’, ‘d’, ‘c’}