集合
定义: S=set(). 注意S={}为字典类型
求两个列表的公共部分
1 pythons=[‘AAA‘,‘BBB‘,‘CCC‘,‘DDD‘,‘EEE‘,‘FFF‘] 2 linuxs=[‘DDD‘,‘GGG‘,‘EEE‘] 3 res=[] 4 for p in pythons: 5 if p in linuxs: 6 res.append(p) 7 print(res)>>> [‘DDD‘,‘EEE‘]
1 集合内可以有多个元素,但是每个元素都必须是不可变类型,即可hash类型
2 集合内的元素唯一
3 集合是无序的
s={1,‘a‘,1,1,1,1,1,1}
#本质 s=set({1,‘a‘,1,1,1,1,1,1})
1 s1=set(‘hello‘) 2 print(s1,type(s1))>>> {‘l‘, ‘h‘, ‘e‘, ‘o‘} <class ‘set‘>
集合优先掌握的方法
1 pythons={‘AAA‘,‘BBB‘,‘CCC‘,‘DDD‘,‘EEE‘,‘FFF‘} 2 print(‘AAA‘ not in pythons)>>> False 3 print(pythons) #集合是无序的>>> {‘EEE‘, ‘CCC‘, ‘BBB‘, ‘FFF‘, ‘DDD‘, ‘AAA‘}
集合的关系运算
s1={1,10,11,22}
s2={1,11,33}
交集
1 print(s1 & s2)>>> {1,11}
并集
1 print(s1 | s2)>>> {1, 33, 10, 11, 22}
差集
1 print(s1 - s2)>>> {10,22} 2 print(s2 - s1)>>> {33}
对称差集
1 print(s1 ^ s2)>>> {33,22,10}
集合的父集与子集
父集
1 s1={1,2,3,5} 2 s2={1,5} 3 print(s1 >= s2)>>> True
子集
1 s1={1,2,3,5} 2 s2={1,5} 3 print(s1 <= s2)>>> False 4 print(s2 <= s1)>>> True
集合的内置方法
pythons={‘AAA‘,‘BBB‘,‘CCC‘,‘DDD‘,‘EEE‘,‘FFF‘}
linuxs={‘DDD‘,‘GGG‘,‘EEE‘}
1. 求出即报名python又报名linux课程的学员名字集合
1 print(pythons & linuxs) 2 print(pythons.intersection(linuxs))>>> {‘EEE‘, ‘DDD‘}
2. 求出所有报名的学生名字集合
1 print(pythons | linuxs) 2 print(pythons.union(linuxs))>>> {‘EEE‘, ‘CCC‘, ‘BBB‘, ‘GGG‘, ‘FFF‘, ‘DDD‘, ‘AAA‘}
3. 求出只报名python课程的学员名字
1 print(pythons - linuxs) 2 print(pythons.difference(linuxs))>>> {‘AAA‘, ‘CCC‘, ‘FFF‘, ‘BBB‘}
4. 求出没有同时这两门课程的学员名字集合
1 print(pythons ^ linuxs) 2 print(pythons.symmetric_difference(linuxs))>>> {‘CCC‘, ‘BBB‘, ‘GGG‘, ‘FFF‘, ‘AAA‘}
集合的其他内置方法
1 s={1,2,3,‘a‘} 2 s.add(5) 3 print(s) #集合是无序的>>> {1, 2, 3, 5, ‘a‘}
4 print(s.pop()) #集合是无序的>>> 1 5 s.remove(‘a‘) #根据元素删除 6 print(s)>>> {2, 3, 5} 7 s.remove(‘vvvvvvvvvv‘) #元素不存在报错KeyError 8 s.discard(‘aaaaaa‘) #元素不存在不报错 9 print(s)>>> {2, 3, 5}
时间: 2024-11-06 12:02:20