定义:
由不同的元素组成的集合,集合中是一组无序排列的可hash值,可作为字典的key,而且集合中的值不可重复。
特性:
集合的目的就是将不同的值存放在一起,不同的集合间来做关系运算,无序纠结集合中单个值
集合包括可变集合和不可变集合
hash是什么?
打个比方,比如说有一个文件(不管多大),对这个文件要进行一个hash校验,会得到一个校验值(固定长度)。
hash是一种统称,具体要进行校验的话,是需要调用它下面的算法。(校验就是通过一个算法算出这个文件的一个值)。
特点:
1.只要用的算法是一定,那么得到的值的长度永远是一定的
2.原值(被校验的值)只要改一点,那么在此校验的值将会改变
3.不可逆。不可能通过一串hash值来推导出这个文件内容
算法:MD5 SH512等等
用途:最多的用途就是进文件校验(看文件是否被篡改)。再一个就是tcp/ip协议。只能对不可变的值进行hash校验。如果集合中有可变类型那么回保错。
s={1,'a',[1,2,3],'a'}
print(s)
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/untitled/day9/集合.py", line 4, in <module>
s={1,'a',[1,2,3],'a'}
TypeError: unhashable type: 'list'
e,g
说列表是不可hash类型
在python中,看到不可hash类型就是可变类型,反之,可hash类型就是不可变类型
去重
s={1,'a','a'}
print(s)
{'a', 1}
无序
s={1,'a',(1,2,3),}
print(s)
{'a', 1, (1, 2, 3)}
s=set('hello')
print(s)
s=set(['alex','alex','sb'])
print(s)
s={1,2,3,4,5,6}
添加
s.add('s')
s.add('3')
s.add(3)
print(s)
清除
s.clear()
print(s)
复制
s1=s.copy()
随机删
s={'sb',1,2,3,4,5,6}
s.pop()
指定删除
s.remove('sb')
s.remove('hellol') #删除元素不存在会报错
s.discard('sbbbb') #删除元素不存在不会报错
print(s)
求交集
python_l=['lcg','szw','zjw','lcg']
linux_l=['lcg','szw','sb']
p_s=set(python_l)
l_s=set(linux_l)
print(p_s,l_s)
print(p_s.intersection(l_s))
print(p_s&l_s)
求并集
print(p_s.union(l_s))
print(p_s|l_s)
差集
print('差集',p_s-l_s)
print(p_s.difference(l_s))
print('差集',l_s-p_s)
print(l_s.difference(p_s))
交叉补集
print('交叉补集',p_s.symmetric_difference(l_s))
print('交叉补集',p_s^l_s)
python_l=['lcg','szw','zjw','lcg']
linux_l=['lcg','szw','sb']
p_s=set(python_l)
l_s=set(linux_l)
print(p_s,l_s)
print('差集',p_s-l_s)
网友评论