集合set
作用:群体之间做比较,不涉及单个元素,当你需要做关系运算,去重这些操作的时候,需要用到集合。
定义:
s = {1,2,3,4,5,6} # 等价于 s = set({1,2,3,4,5,6}) print(type(s)) # <class 'set'>
s1 = set() print(type(s1)) # 注意在定义空集合的只能用关键字set # <class 'set'>
x = {} # 如果你仅仅只写了一个大括号 那么python默认将它当做字典类型 print(type(x)) # <class 'dict'>
t = () print(type(t)) # <class 'tuple'>
# 集合的元素遵循三个原则:
# 1:每个元素必须是不可变类型
# 可变:不可hash
# 不可变:可hash
s = {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)