数据类型之集合 set &运算关系
1.集合 set
用途:关系运算、去重
定义:{ }内用逗号分隔开的多个元素,每个元素都必需是不可变的类型
强调;
1.集合类元素都必需是不可变类型
2.集合内的元素是无序的 ,所以没有索引
3.集合内的元素不能重复
sed={1,2,‘a’}
print(sed={1,2,{“a”:1}}) 直接报错
s={1,'a','hello',(1,2,3),4}
for item in s:
print(item) 每次循环结果顺序错乱
s={(1,2,3),(1,2,3),'a','b','a'}
print(s) 自动删除重复的元素
s=set('hello')
print(s) 顺序错乱
单纯的用集合去重,需要注意的问题是
1 去重的目标所包含的值必须都为不可变类型
2、去重的结果会打乱原来的顺序
常用操作+内置的方法
s1={1,2,3,4,5}
s1.add(6) #集合增加元素
print(s1)
1.长度 len
2.循环 for
3.判断 in 和not in
4. 并集 |
print(pythoners | linuxers) 显示两者索引元素,去除重复的元素
print(pythoners.union(linuxers))
5.交集 &
print(pythoners & linuxers) 显示相同的元素
print(pythoners.intersection(linuxers))
6.差集 -
print(pythoners - linuxers) 删除相同的元素
print(pythoners.difference(linuxers))
7.对称差集 ^
print(pythoners ^ linuxers) 删除相同元素,显示两者的元素
print(pythoners.symmetric_difference(linuxers)
8. 等于 ==
9.父集 (包含关系) > >=
s1={1,2,3,4,5}
s2={1,2,3}
print(s1 > s2) # s1包含s2
print(s1.issuperset(s2)) 判断父集
10.子集 (被包含的关系) < <= isdisjoint判断是否无交集
print(s2.issubset(s1)) 判断子集
print(s1.isdisjoint(s2)) 判断是否无交集
11.更新=增加集合 update 向集合里面增加集合
s1.update({4,7,8,9})
print(s1)
12.删除 remove pop discard
# res=s1.pop()
# print(res)
# res=s1.remove(4)
# print(res)
# print(s1)
s1.discard(7) # 即便要删除的元素不存在也不会报错
二:该类型总结
#1 存一个值or存多个值
可以存多个值,值都必须为不可变类型
# 2 有序or无序
无 序
# 3 可变or不可变
# set集合是可变类型
# s={1,2,3}
# print(id(s))
# s.add(4)
# print(s)
# print(id(s))
#=====================集合的去重==========================
# 单纯的用集合去重,需要注意的问题是
#1、去重的目标所包含的值必须都为不可变类型
#2、去重的结果会打乱原来的顺序
# names=['asb','asb','asb','wsb','wsb','egon_nb',[1,2,3]]
# s=set(names)
# names=list(s) 去重目标必须为不可变类型,
# print(names) 直接报错