set集合
集合特点
- 天生去重
- 无序,每次打印都无序
- 没有索引,循环只能for item进行遍历
集合的操作
set1 = {123, "abc", True}
set2 = {123, "abc", False}
差集
set2.difference(set1)
set2 - set1 = {False}
并集
set1.union(set2)
set1 | set2 = {False, True, 'abc', 123}
交集
set1.intersection(set2)
set1 & set2 = {'abc', 123}
补集
set1.symmetric_difference(set2)
set1 ^ set2 = {False, True}
子集
set1.issubset(set2)
父集
set1.issuperset(set2)
一些集合的方法
set() 强制转换成集合,并去重复
set1 = set((1,2,3,4)) # 将元组转换成集合
set1 = set((1,2,3,4,4,3,2,1)) # 将元组转换成集合
add(x) # 添加元素x
set1.add(4)
update(sqe)# 更新集合
set1 = {1, 2, 3, 4}
set1.update([7,5,8,0])
update方法介绍
- 参数可以是集合,列表,字符串
- 返回值为None,会在原集合上进行更新
remove(x) # 移除元素x
set1.remove(4)
remove方法介绍
- 删除,不存在就报错
- 第一个参数是移除的元素
discard(x) # 删除元素
myset.discard(1)
discard(x)
- 删除,不存在不会报错
difference(set)
newset = set1.difference(set2)
difference方法介绍(差集)
- 显示set1中set2没有的元素
- 返回是一个新的集合
利用枚举进行索印遍历
for idx,iddata in enumerate(myset):
print(idx, iddata)
其他类型转换
set1 = set()
set1 = set([1,2,3,4,5,4,3,2,1])
set1 = set((1,2,3,4,5,4,3,2,1))
set1 = set({1:2,3:4})
set1 = set("abcde")
数据转化详解
- list转换成集合会将每一个元素去重之后添加进集合
- tuple也是会将每一个元素去重之后添加进集合
- 字典仅仅会将键全部存储在集合中
- 字符串会将每一个元素去重之后添加进集合
不可变集合 frozenset
set3 = frozenset([1, 2, 3, 4])
set3.add(5) # 会报错,不可变
利用枚举进行索印遍历
for idx,iddata in enumerate(myset):
print(idx, iddata)