一、集合set
(一)简介
集合是可变的容器
集合内的数据对象都是唯一的(不能重复多次的)
集合是无序的存储结构,集合内的数据没有先后顺序关系
集合内的元素必须是不可变对象
集合是可迭代对象
集合是相当于只有键没有值的字典(键则是集合的数据)
(二)创建集合
创建空的集合:
set() #不能用{}来创建空集合,此方法已被用于字典
创建非空集合:
s = {1,2,3,4}
(三)集合的构造函数set
set() 创建一个空的集合对象(不能用{}来创建空集合)
set(iterable) 用可迭代对象创建一个新的集合对象
示例:
s = set()
s = set(“ABC”) # s = {‘A’,’B’,’C’}
s = set({1:’1’,2:’2’,3:’3’}) # s = {1,2,3}
(四)集合的运算:
交集,并集,补集,子集,超集
运算符:& | - ^ < <= > >= == !=
&交集
|并集
-补集:s1-s2 #生成属于s1但不属于s2的所有元素的集合
^对称补集:s1^s2 #(s1-s2)|(s2-s1)
>判断一个集合是另一个集合的超集
<判断一个集合是另一个集合的子集
(五)in / not in 运算符
in 等同于字典的in, 用于集合中,当某个值存在于集合中,返回True,否则返回False
not in 与 in 返回值相反
集合的 in / not in 运算符的速度快于序列
(六)能用于集合的函数:
len(x)
max(x)
min(x)
sum(x)
any(x)
all(x)
集合是可迭代对象
(七)集合的方法:请自学
(八)集合推导式:
集合推导式是用可迭代对象生成集合的表达式
语法:{表达式 for 变量 in 可迭代对象 [if 真值表达式],}
注:[]内的内容可省略
示例:
numbers = (1,2,3,2,2,3,3,4,5)
s = {x for x in numbers} #去除重复的元素
(九)固定集合 frozenset
(1)固定集合是不可变的,无序的
(2)固定集合可以作为字典的键,还可以作为集合的值
(3)创建空的固定集合
fs = frozenset()
(4)创建非空的固定集合:
frozenset(iterable) 用可迭代的对象创建新的固定集合
示例:fz = frozenset([2,3,5,7]) #frozenset({2,3,5,7})
(5)运算:
&交集
|并集
-补集
^对称补集
in /not in 运算
< <= > >= == !=
(以上运算与set的运算完全相同)
(6)固定集合的方法:
相当于集合的全部方法去掉修改集合的方法
(十)列表,字典,集合对象优缺点:
(1)都为可变
(2)列表的尾部插入速度比较快,查中间插入和头插数据速度慢
(3)列表有序
(4)字典添加,删除,修改速度快于列表
(5)集合的添加,删除快于列表,且不能存储重复元素