特点
- 自带去重操作
- 无序排列
- 元素不可变
用来作什么嘞
- 去重 和 关系运算
- 去重机制使用
a= {1,5,7,9,6,4,7,3,2,1,8,5,6,9,8,4,1,2}
print(a)
#这样重复元素根本存不进去
帮列表去重
li = [5,7,9,6,4,7,3,2,1,8,5,6,9,8,4,1,2]
li = list(set(li))
print(li)
增
s={1,2,4,5,5,2,3,3,2,21,1,1}
s.add("67")
#只能添加一个,添加到末尾
#加一个重复元素,没有提示
#加一个可变元素,会报错
a = {1,5,7,9,6,4,7,3,2,1,8,5,6,9,8,4,1,2}
a.add([]) #这是个列表
print(a)
#出现TypeError: unhashable type: 'list'
unhashable哈希错误
Python不支持dict的key为list或dict类型,因为list和dict类型是unhashable(不可哈希)的。
删
- a.discard()
删除指定的值
如果删除不存在,什么也没有提示
a = {1,5,7,9,6,4,7,3,2,1,8,5,6,9,8,4,1,2}
a.discard(10)
print(a)
a.discard(4)
print(a)
- a.pop()
随机删除,这个很少用,除非特定的情况会返回删除元素 - a.remove()删除指定的值但是和 discard 不同的是删除的值若是不存在,则会报错
查
和元素是否在列表中的方法一样也用 “元素 in 集合” 的结构进行检查
s = {1,2,3,4}
for i in s:
print(i)
关系运算
这t就十分的有意思集合有很多的关系
交集(& intersection)
并集(| union)
差集(- difference)
对称差集 (^ symmetric_difference)只有两个东西之间才存在关系
s1 = {1,2,3,4,5,6,7}
s2 = {5,6,7,1}
print(s1 & s2) # 交集
print(s1 | s2) # 并集
print(s1 - s2) # 差集
print(s1 ^ s2) # 反交集
print(s1 > s2) # 父集(超集)
print(s1 < s2) # 子集
print(frozenset(s1)) # 冻结集合 更不常用
dic = {frozenset(s1):1}
print(dic)