一、集合的作用
知识点回顾:可变类型是不可hash类型,不可变类型是可hash类型
作用:去重,关系运算
定义:可以包含多个元素,用逗号分割,集合的元素遵循三个原则:
1.每个元素必须是不可变类型(可hash,可作为字典的key)
2.没有重复的元素
4.无序
注意集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无需纠结集合中的单个值
二、常用方法
in 和 not in
|并集(print(pythons.union(linuxs)))
&交集(print(pythons.intersection(linuxs)))
-差集(print(pythons.difference(linuxs)))
^对称差集(print(pythons.symmetric_difference(linuxs)))
==
>,>= ,<,<= 父集(issuperset),子集(issuberset)
1 2 3 4 5 6 7 8 9 10 11 12 | >,> = ,<,< = set1 =
1 , 2 , 3 , 4 , 5
set2 =
1 , 2 , 3 , 4
print (set1 > = set2) print (set1.issuperset(set2)) set1 =
1 , 2 , 3 , 4 , 5
set2 =
1 , 2 , 3
print (set1< = set2) print (set1.issubset(set2)) |
三、练习
一.关系运算
有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons=‘alex‘,‘egon‘,‘yuanhao‘,‘wupeiqi‘,‘gangdan‘,‘biubiu‘
linuxs=‘wupeiqi‘,‘oldboy‘,‘gangdan‘
1. 求出即报名python又报名linux课程的学员名字集合
2. 求出所有报名的学生名字集合
3. 求出只报名python课程的学员名字
4. 求出没有同时这两门课程的学员名字集合
1 2 3 | pythons =
‘haiyan‘ , ‘fank‘ , ‘yaling‘ , ‘lalal‘ , ‘haidong‘ , ‘biubiu‘
linuxs =
‘six‘ , ‘wu‘ , ‘dabao‘
# 1. 求出即报名python又报名linux课程的学员名字集合 |
1 2 | pythons =
‘haiyan‘ , ‘fank‘ , ‘yaling‘ , ‘lalal‘ , ‘haidong‘ , ‘biubiu‘
linuxs =
‘six‘ , ‘wu‘ , ‘dabao‘
|
1 2 | print (pythons & linuxs) # 2. 求出所有报名的学生名字集合 |
1 2 | pythons =
‘haiyan‘ , ‘fank‘ , ‘yaling‘ , ‘lalal‘ , ‘haidong‘ , ‘biubiu‘
linuxs =
‘six‘ , ‘wu‘ , ‘dabao‘
|
1 2 | print (pythons | linuxs) # 3. 求出只报名python课程的学员名字 |
1 2 | pythons =
‘haiyan‘ , ‘fank‘ , ‘yaling‘ , ‘lalal‘ , ‘haidong‘ , ‘biubiu‘
linuxs =
‘six‘ , ‘wu‘ , ‘dabao‘
|
1 2 | print (pythons - linuxs) # 4. 求出没有同时这两门课程的学员名字集合 |
1 2 | pythons =
‘haiyan‘ , ‘fank‘ , ‘yaling‘ , ‘lalal‘ , ‘haidong‘ , ‘biubiu‘
linuxs =
‘six‘ , ‘wu‘ , ‘dabao‘
|
1 | print (pythons ^ linuxs) |
四、方法
1 | # ========掌握部分======= |
1 | linuxs =
‘six‘ , ‘wu‘ , ‘dabao‘
|
1 2 3 4 5 | linuxs.add( ‘xiaoxiao‘ ) #说明set类型的集合是可变类型 linuxs.add([ 1 , 2 , 3 ]) #报错,只能添加不可变类型 print (linuxs) # 2. |
1 | linuxs =
‘six‘ , ‘wu‘ , ‘dabao‘
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | res = linuxs.pop() #不用指定参数,随机删除,并且会有返回值 print (res) # 3. res = linuxs.remove( ‘wupeiqi‘ ) #指定元素删除,元素不存在则报错,单纯的删除,没有返回值, print (res) # 4. res = linuxs.discard( ‘egon1111111111‘ ) #指定元素删除,元素不存在不报错,单纯的删除,没有返回值, # =========了解部分========= linuxs =
‘wupeiqi‘ , ‘egon‘ , ‘susan‘ , ‘hiayan‘
new_set =
‘xxx‘ , ‘fenxixi‘
linuxs.update(new_set) print (linuxs) linuxs.copy() linuxs.clear() #解压 a, * _ =
‘zzz‘ , ‘sss‘ , ‘xxxx‘ , ‘cccc‘ , ‘vvv‘ , ‘qqq‘
print (a) |