今天是最后一个容器,结尾总结下容器的特点
集合 set
集合是可变的容器
集合内的对象都是唯一的(不能重复多次的)
集合是无序的存储结构,集合中的数据没有先后顺序关系
集合内的元素必须是不可变对象
集合是可迭代对象
集合是相当于只有键没有值得字典(键则是集合的数据)
创建空的集合:
Set()
创建非空的集合:
S = {1,2,3,4}
集合的构造函数set
Set() 创建一个空的集合对象(不能用{}来创建集合)
Set(iterable) 用可迭代对象创建一个新的集合对象
示例:
S=set()
S={2,3,54,65}
S = set(“abc”) # s = {“a”,”b”,”c”}
S= set({1:”1”, 2:”2”, 5:”5”}) # s={1,2,5}
S= set(range(1:10:3)) # s = {1:4:7}
集合的运算:
交集,并集,补集,对称补集,子集,超集
& | - ^ < <= > >= == != in / not in
& 生成两个集合的交集
S1 = {1,2,3}
S2 = {2,3,4}
S1 & s2 # {2,3}
| 生成两个集合的并集
S1 = {1,2,3}
S2 = {2,3,4}
S1 | s2 # {1,2,3,4}
- 生成两个集合的补集
S1 = {1,2,3}
S2 = {2,3,4}
S1 - s2 # {1}
^ 生成两个集合的对称补集
S1 = {1,2,3}
S2 = {2,3,4}
S1 | s2 # {1,4}
> 判断一个集合是另个一集合的超集
< 判断一个集合是另个一集合的子集
{1,2,3}>{1,2} # True
{1,2}<{1,2,3} # True
== / != 集合相同和不同
{1,2,3}=={3,2,1} # True
{1,2,3}!={3,2,4} # True
In / not in 运算符
In 等同于字典中的in,用于集合中,当某个值存在于集合中,返回True否则False
Not in 与 in相反,判断速度快于序列。
能用于集合的函数
Len(s)
Max(s)
Min(s)
Sum(s)
Any(s)
All(s)
集合是可迭代对象
集合推导式
集合推导式是用可迭代对象生成集合的表达式
语法:
{表达式 for 变量 in 可迭代对象 [if 真值表达式]}
注:[] 内的内容可省略
示例:
Numbers=(1,2,3,4,4,4,5,6)
S={x for x in numbers} # 去除重复的元素
>>> S
{1, 2, 3, 4, 5, 6}
列表字典集合对象的优缺点:
1. 它们都为可变
2. 列表的尾部插入速度比较快,查中间插入和头插入数据速度慢
3. 列表有序
4. 字典添加,删除,修改速度慢于裂变
5. 集合的添加,删除快于列表,且不能存储重复元素
推导式种类:
列表推导式 l=(x… for x in range() if…)
字典推导式 D = {x:x**2 for x in range(10)}
集合推导式 S={x for x in numbers}