集合: 创建 增加 转化 删除 遍历 运算
例题引导:
有两个班英语班和数学班,需要统计这两个班中报名情况,例如统计既报名了英语班又报名数学班的同学名字,即统计为交集。
english_c ={"ZhangSan","LiSi","James","Alex"}
math_c ={"WangWu","LiuDeHua","James","Alex"}
解题思路:统计两个集合中相同的元素 ,应想到利用集合的相关函数来实现,这道题没什么套路,只需要掌握知识点,会用即可。
参考答案:
english_c ={"ZhangSan","LiSi","James","Alex"}
math_c ={"WangWu","LiuDeHua","James","Alex"}
#1、交集--> in a and in b
#统计既报了英语班又报了数学班的同学print(english_c & math_c)
print(english_c.intersection(math_c))
#输出为:{'Alex', 'James'}
#2、并集--> in a or in b
#统计报名了两个班的所有同学print(english_c | math_c)
print(english_c.union(math_c))
#输出为:{'James', 'ZhangSan', 'LiuDeHua', 'LiSi', 'Alex', 'WangWu'}
#3、差集--> in a not in b
#统计只报名英语班的同学print(english_c - math_c)
print(english_c.difference(math_c))
#输出为:{'LiSi', 'ZhangSan'}
4、交差补集
#统计只报名一个班的同学
print(english_c ^ math_c)
#输出为:{'LiuDeHua', 'ZhangSan', 'WangWu', 'LiSi'}
学习引导:
- 数据类型-集合
- 创建
- 增删
- 循环
- 关系运算
数据类型-集合
特点:
里面的元素不可变,不能在集合中存放列表或字典,而字符串、元组、数字等不可变类型可以存放
天生去重,在集合中无法存放相同的元素
无序。不能像列表一样通过索引来标记其元素在列表中的位置,例如{1,2,3}和{2,1,3}是同一个集合。
集合的创建
#集合的创建
s={1,2,3,'32','data','文字','d','f'}
s
#{1, 2, 3, '32', 'd', 'data', 'f', '文字'}
type(s) #查看类型
#set
列表转集合
#列表转集合
l=[1,2,3,'df','ffd']
l
#[1, 2, 3, 'df', 'ffd']
set(l)
#{1, 2, 3, 'df', 'ffd'}
集合的新增 add
#新增
s.add('科学')
s
#{1, 2, 3, '32', 'd', 'data', 'f', '文字', '科学'}
集合的删除 discard/remove/pop
法一
#删除
s.discard('32')
s
#{1, 2, 3, 'd', 'data', 'f', '文字', '科学'}
法二
s.remove(2)
s
#{1, 3, 'd', 'data', 'f', '文字', '科学'}
法三
s.pop()
#1
s
#{3, 'd', 'data', 'f', '文字', '科学'}
集合的循环
#循环
for i in s:
print(i)
'''
3
科学
文字
data
d
f
'''
集合的关系运算
#集合的关系运算
s={1,2,3,'32','data','文字','d','f'}
s2={'science','学长','学员','e','f',3,2,6,7}
交集
s&s2
#{2, 3, 'f'}
并集
#并集
s | s2
#{1, 2, 3, '32', 6, 7, 'd', 'data', 'e', 'f', 'science', '学员', '学长', '文字'}
差集
#差集
s-s2
#{1, '32', 'd', 'data', '文字'}
对称差集
#对称差集
s ^ s2
#{1, '32', 6, 7, 'd', 'data', 'e', 'science', '学员', '学长', '文字'}
判断两个集合是否包含相同的元素,不包含返回true,包含返回false
s.isdisjoint(s2)
#False
s.isdisjoint({123})
#True
子集
#是否为子集的判断
s.issubset(s2)
#False
{1,2,3}.issubset({1,2,3,4,5})
#True
小作业
以下代码输出结果是:
s = {1,2,3} print(s[1])
A. 1
B. 2
C. 无法输出
集合的特性有哪些?