什么是集合?
确定的一组无序数据的组合。
特征:
1.确定的? 集合数据的数据不会相同
2.由多个数据组成的复合型数据(容器类数据)
3.集合是没有顺序的
集合的操作:
1.创建集合
空集合
变量 = set()
具有多个数据的集合
变量 = {数据,数据,数据…}
注意:1.集合创建时如果存在相同的数据,集合会只保留一份。
2.集合可以存放的数据类型有Number,String,Tuple,冰冻集合类型
#集合没有添加,获取,删除及修改的【基本操作】!
集合的序列操作:由于集合数据比较特殊,集合操作非常少
成员检测
in
数据 in 集合
not in
数据 not in 集合
集合的序列函数:
len() 检测容器的长度
max() 获取容器中的最大值
min() 获取容器中的最小值
set() 创建空集合或者将其他数据类型转换为集合
集合的遍历操作:
只能使用for…in 来遍历集合
for 变量 in 集合:
循环内容
集合的推导式/集合内涵:
普通的集合推导式:
变量 = {变量 for 变量 in 集合}
带有判断条件的集合推导式
变量 = {变量 for 变量 in 集合 if 条件表达式}
多循环的集合推导式:
变量 = {变量1和变量2的操作 for 变量1 in 容器 for 变量2 in 容器}
带有判断条件的多循环推导式:
变量 = {变量1和变量2的操作 for 变量1 in 容器 for 变量2 in 容器 if 条件表达式}
集合专用的函数:
add() 向集合中添加一个元素/数据
格式:集合.add(数据)
返回值:None
注意:操作直接修改原有集合。
pop() 随机删除集合中的一个元素/数据
格式:集合.pop()
返回值:随机删除的数据
注意:操作直接修改原有集合。
remove() 删除指定的数据,数据不存在会报错
格式:集合.remove(数据)
返回值:None
注意:操作直接修改原有集合。
discard() 删除指定的数据,数据不存在不进行操作
格式:集合.discard(数据)
返回值:None
注意:操作直接修改原有集合。
clear() 清空集合
格式:集合.clear()
返回值:None
注意:操作直接修改原有集合。
copy() 复制集合
格式:集合.copy()
返回值:None
注意:复制的集合和原集合内容一样,但是不是一个集合
#集合运算符:
& 交集
| 并集
- 差集
^ 对称差集
#集合运算函数:
差集:difference() *
格式:集合1.difference(集合2)
返回值:差集的集合
更新差集:difference_update()
格式:集合1.difference_update(集合2)
返回值:None
注意:所谓更新差集,就是计算差集之后将结果重新赋值给第一个集合的变量而已
交集:intersection()
格式:集合1.intersection(集合2)
返回值:交集的集合
更新交集:intersection_update()
格式:集合1.intersection_update(集合2)
返回值:None
注意:更新交集,就是计算交集之后将结果重新赋值给第一个集合的变量
并集:union()
格式:集合1.union(集合2)
返回值:并集结果
更新并集:update()
格式:集合1.update(集合2)
返回值:None
注意:更新并集,就是计算并集之后将结果重新赋值给第一个集合的变量
对称差集:symmetric_difference()
格式:集合1.symmetric_difference(集合2)
返回值:对称差集的集合
更新对称差集运算:symmetric_difference_update()
格式:集合1.symmetric_difference_update(集合2)
返回值:None
注意:计算对称差集的结果直接更新到集合1的变量当中
检测是否是超集:issuperset()
格式:集合1.issuperset(集合2)
返回值:布尔值
检测是否是子集:issubset()
格式:集合1.issubset(集合2)
返回值:布尔值
检测是否不相交的函数: isdisjoint()
格式:集合1.isdisjoint(集合2)
返回值:布尔值
注意:集合不相交结果为True,集合相交,结果为False