集合
什么是集合
- 集合(set)是一个无序的不重复元素序列
- 常用来对两个列表进行交并差的处理
- 集合与列表一样,支持所有的数据类型
- 可以使用set函数或者带值的{}进行定义,不能使用空的{}进行定义
{"name",1,"age"}
列表与集合的区别
- 集合是无序的,无索引的,不可重复的,用于数据的交集并集差集的获取
- 列表是有序的,有索引的,可重复的,用于数据的使用
集合的创建
- 可以使用set函数或者带值的{}进行定义,不能使用空的{}进行定义
- 集合可以添加所有的不可变类型的数据
- 可以使用集合来进行去重
a_set = set() # 空集合
b_set = set([1,2,3]) # 传入一个列表或者元组
b_set = {1,2,3} # 传入一个元组
c_set = {} # 此处为定义一个字典
集合的增删改
add()函数(添加一个元素)
- 用于向集合中添加一个元素
- 用法:
set.add(item)
- 参数:
item 要添加到集合中的元素
无返回值
- 注意:
- 如果集合中已经存在该元素,则不执行
- 集合是无序的,添加的元素不一定添加在最后
update()函数(加入一个新的集合)
- 用法:
set.update(iterable)
- 参数:
iterable 新的集合,列表,字符串
无返回值
- 注意:
- 如果原集合中已经存在新集合的元素,则新集合中的元素不会被添加
remove()函数(将集合中的元素删除)
- 用法:
set.remove(item)
- 参数:
item 当前集合中的一个元素(是元素不是索引)
无返回值
- 注意:
- 如果集合中不存在这个元素,则会直接报错
clear()函数(清空当前集合中的所有元素)
- 用法:
set.clear()
- 参数:
无返回值
- 注意:
- 会删除集合中的所有元素
del()函数(删除集合)
- 用法:
del set
- 参数:
无返回值
- 注意:
- 集合没有索引,无法通过del进行索引删除
集合要点
- 集合无法通过索引获取元素
- 集合无获取元素的任何方法
- 集合只是用来处理列表或元组的一种临时类型,不适合存储与传输
集合的差集
什么是差集
- a,b两个集合,由所有属于a且不属于B的元素组成的集合叫做a与b的差集
differnce()函数(返回集合的差集)
- 用法:
a_set.differnce(b_set)
- 参数:
a_set 第一个合集
b_set 第二个集合,需要对比的集合
返回值:返回原始合集于对比集合的差集(返回a_set与b_set的差集)
- 注意:
- 返回的集合元素包含在第一个集合中,但不包含在第二个集合中
集合的交集
什么是交集
- a,b两个集合分别拥有相同的元素集,称为a与b的交集
intersection()函数(返回两个或者更多集合中都包含的元素,交集)
- 用法:
a_set.intersection(b_set...)
- 参数:
b_set.... 与当前集合对比的1个或者多个集合
- 注意:
- 需要满足a中的元素在函数参数内的所有集合中都存在,才会被返回
集合的并集
什么是并集
- a,b两个集合中所有的元素(去除重复元素)即为a与b的并集
union()函数(返回多个集合的并集)
- 用法:
a_set.union(b_set...)
- 参数:
b_set.... 与当前集合对比的1个或者多个集合
- 注意:
- 返回包含了所有集合的元素,重复的元素只会出现一次
isdisjoint()函数(判断两个集合是否包含相同的元素)
- 用法:
a_set.isdisjoint(b_set)
- 参数:
b_set 与当前集合用来判断的集合
返回一个布尔值True或者False
- 注意:
- 如果两个集合没有相同的元素返回True,如果有相同的元素返回False
运算符和集合函数的差异
函数 | 运算符 | 集合类型 | 备注 |
---|---|---|---|
intersection | & | 交集 | 我有你也有 |
union | ` | ` | 并集 |
differnce | - | 差集 | 我的减掉你有的 |
- 使用以上函数是,函数的参数可以是集合,列表或者是字典,字符串
- 但是使用运算符时,左右两边必须都是集合