集合set
作用:群体之间做比较,不涉及单个元素,当你需要做关系运算,去重这些操作的时候,需要用到集合。
定义:
s = {1,2,3,4,5,6} # 等价于 s = set({1,2,3,4,5,6})print(type(s)) #
s1 = set()print(type(s1)) # 注意在定义空集合的只能用关键字set## 如果只是{}默认是字典,要定义成集合要写成set{}
x = {} # 如果你仅仅只写了一个大括号 那么python默认将它当做字典类型print(type(x)) #
t = () print(type(t)) #
# 集合的元素遵循三个原则:
# 1:每个元素必须是不可变类型 # 可变:不可hash # 不可变:可hashs = {1,2,3,4,5,6,'a',(1,2),[1,2]} # 报错s = {1,2,3,4,5,6,'a',(1,2),{ "name":'jason'}} # 报错#每个元素都得是不可变类型
# 2:没有重复的元素
s = {1,2,2,2,2,2,2,2,2,2,3,4,4,4,4,4,5}print(s) # {1, 2, 3, 4, 5} # 自动将重复的元素 去除
# 3:无序
s = {1, 2, 3, 4, 5, 6}print(s[1])#报错,因为没有索引
# 注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值
优先掌握
1. 长度len
s = {1,2,3,4}print(len(s)) # 4
2. 成员运算in和not in
3. |合集
4. &交集5. -差集6. ^对称差集7. ==s = {1,2,3}s1 = {3,1,2}print(s == s1) # True
8. 父集:>,>=
s = {1,2,3,4,55}s2 = {1,2,666}print(s >= s2) # False # s是否包含s2"""issubset()issuperset()"""
9. 子集:<,<=
pythons = { 'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'}linux = { 'frank', 'jerry', 'tank', 'egon', 'alex'}# 既报名python也报名linux的学生姓名print(pythons & linux) # 交集# 只报名python的学生姓名print(pythons - linux)# 只报名linux的学生姓名print(linux - pythons)# 没有同时报名两门课程的学生姓名print(pythons ^ linux) # 对称差集# 取出所有报了名的学生姓名print(pythons | linux)s = {1,2,3,4,5}print(s.add(666))print(s.add((1,2,3,4))) # 将容器类型也当成一个元素传入s.# print(s.remove(1))# print(s)# print(s.discard(888888888))# print(s)