集合
集合的特点
集合表现形式set 集合和列表非常相似
不同点:
- 集合只能存储不可变对象
- 集合中存储的对象是无序的
- 集合不能出现重复元素
集合的创建
- 创建空集合: 通过class set来创建
这里特意指出空集合是为了避免和空字典的概念混淆,集合的符号也是花括号{},但是直接用
{}去定义,python解释器会将它识别为字典而非集合
set1 = {}
print(type(set1))
set2 = set() # 集合是可变对象,空集合okay的,空元组,元组不可变没什么意义
print(type(set2))
<class 'dict'>
<class 'set'>
- 用{}来创建集合
set1 ={"string",1,(1,2,3)}
print(set1)
print(set1[0])
'''
第一次执行 {1, 'string', (1, 2, 3)}
第二次执行 {1, (1, 2, 3), 'string'}
和set1定义的时候的顺序都不一致
print(set1[0]) 直接报错,因为无序,不支持索引
TypeError: 'set' object does not support indexing
set2 ={[1,2,3]}
print(set2)
set2中有元素[1,2,3]是序列,是可变对象,故不支持
'''
- 通过set()来将序列和字典转换成集合
业务场景是去重,因为集合不可以出现重复元素
lst = [1,1,3,2,4,4,5]
set1 = set(lst)
print(set1)
# 去重后强转回来成为list
lst = list(set1)
print(lst)
1, 2, 3, 4, 5}
[1, 2, 3, 4, 5]
集合的方法
len() 使用len()来获取集合中元素的数量
add()像集合中添加元素
update()将一个集合中的元素添加到另一个集合当中
pop()随机删除集合中的一个元素一般是删除最后一个元素
remove() 删除集合中指定的元素
clear() 清空集合
# 定义一个空集合
set1 = set()
# 输出集合的长度
print(len(set1))
#为集合添加元素
set1.add("string")
print(set1)
# 用集合set2来扩展set1,和字典的update功能一致,和列表的extend功能一致
set2 ={"你好","中国"}
set1.update(set2)
print(set1)
# remove 操作,没有返回值
set1.remove("中国")
print(set1)
# pop()随机弹出一个元素
val=set1.pop()
print(val)
# clear 清空集合
set1.clear()
print(set1)
0
{'string'}
{'中国', '你好', 'string'}
{'你好', 'string'}
你好
set()
集合的运算 (数学上的一些概念)
& 交集运算
| 并集运算
- 差集运算
^ 亦或集
<= 检查一个集合是否是另一个集合的子集
< 检查一个集合是否是另一个集合的真子集
>=检查一个集合是否是另一个集合的超集
>检查一个集合是否是另一个集合的真超集
set1={1,2,3,4,5}
set2={3,4,5,6,7}
set3={3,4,5}
print(set1 & set2)
print(set1 | set2)
print(set1 - set2)
print(set1 ^ set2)
print(set3 <= set1)
print(set2 >= set3)
执行结果:
{3, 4, 5}
{1, 2, 3, 4, 5, 6, 7}
{1, 2}
{1, 2, 6, 7}
True
True