集合
3.5.6 集合 关键字 set
存储数据 天然去重 无序 不能使用下标
内容为不可变数据 没有值的字典
set('123') 迭代添加
se = {1,2,3,4,5,1,2,3,6,7}
print(se)
输出结果:{1, 2, 3, 4, 5, 6, 7}
面试题:用一行代码去重
lst = [1,2,3,1,2,3,4,5,6]
print(list(set(lst)))
输出结果:[1, 2, 3, 4, 5, 6]
3.5.6.1 增
- add 只能添加一个
se = {1,2,3,4,5,6}
se.add(7) #重复的内容不会被添加 随机添加
print(se)
- update 迭代添加
se = {1,2,3,4,5,6}
se.update('你好') #可迭代对象 随机添加
print(se)
输出结果:{1, 2, 3, 4, 5, 6, '好', '你'}
3.5.6.2 删
- se.clear() set() 空集合
- se.pop() 随机删除,有返回值,返回被删除的值
- se.remove() 可以指定删除,通过内容删除
3.5.6.3 改
没有办法直接修改,先删再加
3.5.6.4 查
for 循环
3.5.6.5 常用操作
s1 = {1,2,3,4}
s2 = {4,5,6}
print(s1 & s2) # 交集
print(s1 | s2) # 并集
print(s1 - s2) # 差集
print(s1 ^ s2) # 反交集
print(s1 < s2) # 子集 判断s1是不是s2的子集
print(s1 > s2) # 超集 判断s1是不是s2的超集
输出结果:
{4}
{1, 2, 3, 4, 5, 6}
{1, 2, 3}
{1, 2, 3, 5, 6}
False
False
3.5.6.6 frozenset
set集合本身是可以发生改变的数据类型,是不可哈希的,我们可以使用frozenset来保存数据,frozenset是不可变的,也就是个可哈希的数据类型
s = frozenset(["赵本山", "刘能", "长桂"])
dic = {s:'123'} # 可以正常使用了
print(dic)
输出结果:
{frozenset({'刘能', '赵本山', '长桂'}): '123'}