1.什么是集合
1.集合是一个可变容器
2.集合内的数据对象都是唯一的(不能重复)
3.集合是无序的存储结构,集合内的数据没有先后关系
4.集合是可迭代对象
5.集合相当于是只有键没有值得字典(键就是集合中的数据)
6.集合内的元素是不可变的
2.创建集合
1.使用直接量创建集合
注意:使用直接量不能创建空集合
s = {1,2,3}
s = {"hello",3.14,True,(2019,02,17)}
2.使用构造函数创建集合 - set
s = set() #创建空集合
s = set(iterable) #使用可迭代对象创建一个集合
s = set("ABC") # s = {'A','B','C'}
s = set([1,0,3.14,"hello"]) # s = {1,0,3.14,'hello'}
... ...
3.集合的运算
交集,并集,补集,子集,超集
1.交集 - &
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 & s2 # s3 = {2,3}
2.并集 - |
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 | s2 #s3 = {1,2,3,4}
3.补集 - -
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 - s2 #生成属于s1 但 不属于s2的所有的元素
#s3 = {1}
4.对称补集 - ^
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 ^ s2 # (s1 - s2) | (s2 - s1)
5.超集 - >
6.子集 - <
s1 = {1,2,3}
s2 = {2,3}
s1 > s2 # True s1 是 s2 的超集
s1 < s2 # False s1 不是 s2 的子集
7.集合的相等 - ==
8.集合的不等 - !=
s1 = {1,2,3}
s2 = {3,2,1}
s1 == s2 #True,集合相等
9.成员运算 - in , not in
等同于字典 in , not in
目的:判断某个值在集合中存在 / 不存在
4.用于集合的内建函数
len(set) : 集合内元素的个数
max(set) : 最大值
min(set) : 最小值
sum(set) : 和
any(set) : 任何一个元素为真,则返回真
all(set) : 所有元素为真,则返回真
5.用于集合的方法
1.add()
作用:
向集合内增加元素,如果添加的元素已经存在的话,则不执行任何操作
语法:
集合对象.add(elem)
参数:elem 表示要增加的元素
返回值:无
View Code
2.clear()
作用:
清空集合内所有的元素
语法:
集合对象.clear()
参数:无
返回值:无
View Code
3.copy()
作用:
复制一个集合
语法:
集合对象.copy()
参数: 无
返回值:返回已复制的集合对象
View Code
4.difference()
作用:
返回两个集合的补集
语法:
集合对象1.difference(集合对象2)
参数 :集合对象2 ,表示计算补集的另外一个集合
返回值 :补集结果,即出现在集合1中但没出现在集合2中的元素集合
等同于: 集合对象1 - 集合对象2
View Code
5.difference_update()
作用:
移除两个集合中都存在的元素
语法:
集合对象1.difference_update(集合对象2)
参数 集合对象2 :计算补集的集合
返回值:无
注意:直接从集合对象1中删除交集
View Code
6.remove()
作用:
移除指定的元素
语法:
集合对象.remove(移除元素)
参数 移除元素:要移除的内容
返回值 :无
注意:如果要移除的元素不存在,则发生错误
View Code
7.discard()
作用:
移除指定的元素
语法:
同上
注意:如果要删除不存在的元素,不会发生错误
View Code
8.pop()
作用:
用于随机删除一个元素
语法:
集合对象.pop()
View Code
9.intersection()
作用:
返回两个或多个集合中的交集元素
语法:
set1.intersection(set2,set3,set4)
参数:
做交集的集合对象,可以是多个
返回:
返回交集的集合结果
View Code
10.intersection_update
作用:
获取多个集合的交集,但会将结果直接影响回调用该方法的集合对象
语法:
s1.intersection_update(s2)
参数:做交集的集合
返回值:无,但会影响s1的结果
View Code
11.isdisjoint()
作用:
判断两个集合中是否包含相同的元素,如果没有返回True,否则返回False
语法:
s1.isdisjoint(s2)
View Code
12.issubset()
作用:
判断一个集合的元素是否都包含在指定集合中(判断子集),如果是返回True,否则返回False
语法:
s1.issubset(s2)
View Code
13.issuperset()
作用:
判断超集
语法:
s1.issuperset(s2)
返回值:
如果s1 包含 s2 ,则返回True
如果s1 不包含 s2 ,则返回False(如果s2中有的元素没在s1中)
View Code
14.symmetric_difference()
作用:
对称补集,即返回两个集合中不重复的元素集合
语法:
s1.symmetric_difference(s2)
参数:计算对称补集的集合
返回值:返回一个不重复的元素的集合
等同于 s1 ^ s2
View Code
15.symmetric_difference_update()
作用:
对称补集,将结果直接影响回原始集合
语法:
s1.symmetric_difference_update(s2)
View Code
16.union()
作用:
返回两个集合的并集即返回两个集合中所有的元素,重复元素只出现一次
语法:
s1.union(s2)
返回值:并集结果
等同于:s1 | s2
View Code
17.update()
作用:
修改当前集合,也可以添加新元素到集合中
语法:
s1.update(s2)
参数:用于更新s1集合的新集合
返回值:会将更新的结果进行返回
View Code
6.集合推导式
集合推导式即允许使用可迭代对象生成集合的表达式
语法:
{ 表达式 for 变量 in 可迭代对象 if 条件}
L = [1,2,3,4,5,6,7,8,9]
s = { x for x in L}
s = { x for x in L if x % 2 == 0}
7.固定集合 - frozenset
1.特点
1.不可变的容器 - 允许作为字典的键
2.无序的
3.元素唯一
2.创建固定集合 - 使用构造函数(frozenset)
1.frozenset() : 创建一个空的固定集合
2.frozenset(iterable) : 使用可迭代对象创建固定集合
示例:
f = frozenset() # 空固定集合
f = frozenset([1,2,3,4]) # f = frozenset({1,2,3,4})
3.固定集合的运算
交集(&),并集(|),补集(-),对称补集(^)
<,>,>=,<=,==,!=
int / not in
4.固定集合的方法
相当于集合的全部方法去掉能够修改集合的方法