一:什么是集合?
1、集合(set)是可变的容器。
2、集合内的数据对象是唯一的(是不能重复的)。
3、集合是无序的存储结构,集合中的数据没有先后关系(特点:插入、删除比较快)。
4、集合内的元素必须是不可变对象。
5、集合是可迭代的。
6、集合是相当于只有键没有值的字典(键则是集合的数据)。
二:集合的创建
1、创建空的集合: s = set()
2、创建非空集合: s = {1,2,3} #集合中的三个整数:1,2, 3
3、集合的构造函数:
Set() 创建空集合
Set(iterable) 用可迭代对象创建一个新的集合
示例:
s = set(‘ABC’)
s = set(‘ABCCBA’) ---- 多了一个A和C,默认会把多余的A\C删除
s = set({1:’一’, 2:’二’, 3:’三’}) 用字典生成的集合,只有键,没有值
s = set([1, 3.14, False])
s = set((2,3,5,7)) ----- 元组转换成集合
三:集合的运算:交集、 并集 、补集、 子集、 超集
1、生成两个集合的交集: &
S1 = {1,2,3}
S2 = {2,3,4}
S3 = s1 & s2
2、生成两个集合的并集:| (即存在s1中,也存在s2中,去掉重复项)
S1 = {1,2,3}
S2 = {2,3,4}
S3 = s1 | s2
4、生成两个集合的补集:- 生成属于s1,但不属于s2的所有元素的元素的集合。
S1 = {1,2,3}
S2 = {2,3,4}
S3 = s1 - s2
5、生成两个集合的对称补集:^
S1 = {1,2,3}
S2 = {2,3,4}
S3 = s1 ^ s2
6、判断一个集合是另一个集合的子集: <
S1 = {1, 2, 3}
S2 = {2, 3}
S2 < s1 #True 判断子集
7、判断一个集合是另一个集合的超集: >
S1 = {1, 2, 3}
S2 = {2, 3}
S1 > s2 #True 判断超集
8、== != 集合相同/不同
S1 = {1, 2, 3}
S2 = {2, 3,1}
S1 == s2 #True
S1 != s2 # 集合的数据没有先后关系
9、 in /not in 运算符
等同于字典,in运算符用于集合中,当某个值存在于集合中,则为真,否则为假,not in与in返回值相反。
示例:
S = {1, ‘Two’3.14}
1 in s #True
2 in s #False
3.14 not in s #False
4not in s #True
四:集合的方法:集合是可变对象,可用方法添加、删除集合的数据。
A:集合与列表等一些常用的方法相似
1、s.add(e) 在集合中添加一个新的元素e;如果元素已经存在,则不添加
2、s.remove(e) 从集合中删除一个元素,如果元素不存于集合中,则会产生一个KeyError
3、s.clear(e) 清空集合内的所有元素
4、s.discard(e) 从集合s中移除一个元素e,在元素e不存在时什么都不做
5、s.copy() 将集合进行一次浅拷贝
6、s.pop() 从集合中删除一个随机元素,如果此集合为空,则引发错误
7、update(s2) 用s与s2得到的全集更新
B:集合专用方法
1、s.difference(s2) 用s – s2运算,返回存在于在s中,但不在s2中的所有元素
2、s.difference_update(s2) 等同于s = s – s2
3、s.intersection(s2) 等同于s & s2
4、s.intersection_update(s2) 等现于 s = s &s2
5、s.isdisjoint(s2) 如果s与s2交集为空返回True,非空则返回False
6、s.issubset(s2) 如果s与s2交集为非空返回True,空则返回False
7、s.issuperset() 如果s 为s2的子集返回True,否则返回False
8、s.symmetric_difference(s2) 返回对称补集,等同于s^s2
9、s.symmetric_difference_update(s2) 用s与s2的对称补集更新s
10、s.union(s2) 生成s与s2的全集
五:练习
任意输入一个单词,存入集合中,当输入回车时,结束输入
1、打印您输入的单词的种类数(去重)
2、每个字母都打印到终端上显示
结语
今天要记的东西有点多,朋友们,多多加油哦!如果喜欢IT时代的内容请加粉、评论、关注!