容器类型:集合
容器类型:集合
标签的容器
“标签袋”
- 通过改造字典类型,去掉关联数据值,只留下标签的新容器类型
集合是不重复元素的无序组合
创建一个集合
创建集合:{}或者set()
- 用set()创建空集
- 空大括号代表空字典,不代表空集合
- empty =set()
- 可用set()从其它序列转换生成集合
集合会自动忽略重复的数据
集合中不能加入可变类型数据
- aset ={[1,2],3,4} # 会报错
更新一个集合
增长集合
add(item):添加一个数据
nums ={23,34,98,89}
nums.add(56)
print(nums)
update(序列):批量添加数据
nums ={23,34,98,89}
nums.update([56,12])
print(nums)
nums.update({'a':1,'b':2}) # 将所有key添加到集合里
缩减集合
remove(元素)/discard(元素):删除指定数据
nums ={23,34,98,89}
nums.remove(23)
nums.discard(34)
print(nums)
nums.remove(100) #报错
nums.discard(100) #不会报错
pop:删除任意数据并返回值
clear:清空集合
集合大小
len函数
访问集合中的元素
in
- 判断元素是否属于集合
pop
- 删除数据元素的同时,返回它的值
- 取遍所有数据元素之后,集合成为一个空集
- 可以用copy操作先给集合制作一个“替身”
迭代循环 for a in aset:
nums ={23,34,98,89}
for a in nums:
print(a) #89,34,98,23
集合的运算
生成新集合运算
运算 运算符 新集合方法 更新原集合方法
交 a & b
并 a | b
差 a - b
对称差 a ^ b
关系判定
-
<=,=,>:子集/真子集/超集/真超集
print({100,200,300,400} < {(10,20)} # False
print({100,200,300,400} < {(100,200)} # True
pritnt({100,200} < {100,200}) # False
交集
-
isdisjoint():两集合交集是否为空
aset = {1,2,3}
bset = {3,4,5}print(aset & bset) # 3
print(aset | bset) # 1,2,3,4,5
print(aset - bset) # 1,2
print(aset ^ bset) # 去掉两个集合公共的部分 1,2,4,5
什么时候用集合
快速去除重复的数据项
154, 233, 432, 154, 236, 213, 342, 432, 236, 332, 321, 243, 319, 326, 324, 321, 163, 183, 235,…
判断元素是否在一组数据中,如果这些数据的次序不重要,使用集合可以获得比列表更好的性能
如,325是否在上述的一组数据中?