集合是可变数据类型;它里边的元素必须是不可变数据类型
set就是不存value的字典,只存key
set中的元素是不能重复的,无序的,可哈希的;因为无序,所以没有索引
哈希的特点就是散列,所以set内部是无序的
创建集合的方式
set = set()
set = ({})
set = {}
set = set({})
增删改查
set.add() # 正常增加
set.update() # 迭代添加,如果加的是字符串,则拆分字符串
for i in set # 随机刷数据
set.pop() # 随机删,不要添加元素
set.remove() # 按元素删 如果元素不存在,报错
set.clear() # 清空集合 打印集合得到的结果是set()
交集并集反交集...
set1&set2 # 得到交集
set1.intersection(set2) # 同样的到交集
set1^set2 # 得到差集
set1.symmetric_difference(set2) # 同上
set1-set2 # 得到set1独有差集
set.difference(set2) # 同上
set1 < set2 # 说明set1是set2子集
set1.issubset(set2)
冻结集合
- frozenset冻结集合,它是不可变的,存在哈希值,
- 好处是可以作为字典的Key,也可作为其他集合的元素
- 缺点是创建不能修改,没有add,remove方法.
s = frozenset("barry")
print(s, type(s))
使用技巧
set1 -= set2("") # 直接删掉字符串拆分后的内容
set("posh") == set("shop")
set1 | set2 # 合并集合
set.discard(obj) # 这个方法删除,如果元素不存在不报错,返回none
集合推导式
s = {x**2 for x in [1, -1, 2]}