4.5 集合(set)
4.5.1 认识集合
- python 提供的一种内置数据结构,是一些不可重复的无序组合。分为可变集合和不可变集合。
- 缺省条件下创造的都是可变集合
- 属于可变类型序列
- 集合中是没有 value 的字典
- 集合的可以作为字典的键
- 集合示意图:
- 与字典一样运用 hash 进行无序保存
4.5.2 创建集合
-
通过花括号
{}
创建可变集合-
例如:
set1 = {1,2,3,4,5}
-
-
通过
set()
内置函数创建可变集合-
例如:
set1 = set(range(1,6))
-
set()
方法还可以将其他类型的数据转换为集合类型 ,并去重数据-
例如:
print(set([1,3,9,6,7,3])) print(set('Python'))
{1, 3, 6, 7, 9} {'y', 'P', 'h', 'o', 'n', 't'}
-
-
-
使用
forzenset()
函数创建不可变集合-
例如:
s = frozenset([1, 2, 3, 'a', 1]) print(s)
frozenset({1, 2, 3, 'a'})
-
不可变集合应用之一就是用来作为字典的键
-
-
创建空集合
- 在 python中,创造空集合只能用
set()
而不能用{ }
,如果使用{ },则会创建一个空字典。
- 在 python中,创造空集合只能用
4.5.3 集合元素的基本操作
- 集合元素的操作只针对可变集合
4.5.3.1 判断操作
- 使用运算符
in
或者not in
进行判断,结果为布尔类型
4.5.3.2 新增操作
- 调用
add()
方法:添加一个元素 - 调用
update()
方法:至少添加一个元素
4.5.3.3 删除操作
- 调用
remove()
方法,删除一个指定元素,如果元素不存在会报 KetError 异常 - 调用
discard()
方法,删除一个指定元素,如果元素不存在不会报出异常 - 调用
pop()
方法,只删除一个任意元素 - 调用
clear()
方法
4.5.4 集合之间的关系
- 判断两个集合是否相等:
==
或者!=
- 判断前者是否是后者的子集:
<
或者issubset()
- 真子集用运算符
<=
- 真子集用运算符
- 判断前者是否是后者的超集:
>=
或者issuperset()
- 真超集用运算符
>
- 真超集用运算符
- 判断两个集合是否有交集:
isdisjoint()
4.5.5 集合中的数学操作
-
交集:
&
或者intersection()
-
例如:
s1 = {10,20,30,40} s2 = {20,30,40,50} print(s1 & s2) print(s1.intersection(s2))
{40, 20, 30} {40, 20, 30}
-
-
并集:
|
或者union()
-
差集:
-
或者difference()
-
对称差集:
^
或者symmetric_difference()
4.5.6 集合的并入
-
使用运算符
|=
将后一个集合并入前一个集合 -
例如:
s1 = {10,20,30,40} s2 = {20,30,40,50} s1 |= s2 print(s1) print(s2)
{40, 10, 50, 20, 30} {40, 50, 20, 30}
4.5.7 集合的遍历
- 使用 for 循环遍历即可
4.5.8 集合生成式
-
作用:用于生成集合
-
语法格式:
{表示集合元素的表达式 for 自定义变量 in 可迭代对象}
4.5.9 集合其他常用方法
- 适合所有集合的方法
-
set1.copy()
:用于复制集合set1,返回set1的一个副本
-