字典的成员资格判断 in not in 运算符
用in运算符可以判断一个键是否存在与字典中,如果存在则返回True,否则返回False
not in 返回值与in相反.
【该判断方式只能判断键,不能判断值。】
列表的in运算符和字典的in运算符比较:
1.列表的in运算符计算时间会因为列中元素个数增加而增加。列表元素越多,判断越慢。
【因为其为顺序存储,需要按顺序比对】
2.字典的in运算符计算时间不会因为键值对的个数增加而增加,操作速度快于列表。
【字典的键是通过‘散列存储’储存的,通过哈希运算给定每个键的确定属性,无需比对,直接查找。】
字典的迭代访问:
容器是可迭代对象,字典只能对键进行迭代访问
d = {'name':'xiaozhao','birthday':(2008.8.8)}
for k in d:
print(k)
可以用于字典的内建函数(built-in):(只对键有作用。)
len(x) 返回字典键值对个数
max(x) 返回字典键的最大值
min(x) 返回字典键的最小值
sum(x) 返回字典键的和
any(x) 对所有键进行真值测试,有一个为True结果为True
len(x) 对所有键进行真值测试,所有为True结果为True
字典的方法:
d.clear() 清空字典
d.pop(key) 移除键,同时返回此键所对应的值。
d.copy() 复制一个字典
字典推导式:
语法:
{键表达式:值表达式 for 变量 in 可迭代对象[if 真值表达式]
字典推导式的嵌套:
同列表推导式嵌套
字典VS列表:
1. 都是可变对象
2.索引方式不同,列表用整数索引, 字典用键索引
3.字典查找速度‘可能’会快于列表(important)
4.列表储存是有序的,字典储存是无序的(散列存储)
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
集合 set:
集合是可变容器
集合内的数据对象都是唯一的(不能重复多次)
集合是无序的储存结构,集中的数据没有先后顺序呢关系
集合内的元素必须是不可变对象
集合是可迭代对象
集合是相当于只有键没有值的字典(键则是集合的数据)
创建空的集合:
set() 不能用{}
创建非空集合:
s = set(iterable)
s = {1,2,3,4} ……集合
s = {} ……字典
集合的运算:
运算符:&(交集) |(并集) -(补集) ^(对称补集) <(判断左是右的子集)
> (判断左是右的超集) == !=(集合相同和不同) >= <=(略) in / not in(略)
s1 = {1,2,3}
s2 = {2,3,4}
符号&:(交集)
s3 = s1&s2 = {2,3}
符号|:(并集)
s4 = s1 | s2 ={1,2,3,4}
符号-:(补集)
s5 = s1 - s2 = {1}
s6 = s2 - s1 ={4}
符号^:(对称补集)
s7 = s1^s2={1,4}
符号 > <(超集,子集)
{1,2,3}>{1,2}
{2,3,1}>{3,2}
能用于集合的函数:
len max min sum any all
集合是可迭代对象
python3 中集合的常用方法:
s.add(e) 添加,若已存在则不添加
s.remove(e) 删除 (若不存在,则产生错误)
s.discard(e) 从集合中移除一个元素e (若不存在 无影响)
s.clear() 清空集合
s.copy() 浅拷贝集合
s.pop() 从集合中随机删除一个元素(不存在会报错)
s.update(s2) 将集合s2中的元素添加到s中
集合推导式:
集合推导式使用可迭代对象生成集合的表达式
语法:
{表达式 for 变量 in 可迭代对象 [if 真值表达式]}
示例:
num = (1,2,3,2,2,3,3,4,5)
s = {x for x in num}
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
固定集合(frozenset)
固定集合是不可变的,无序的,含有不重复元素的集合。
作用:
固定集合可以作为字典的键,还可以作为集合的值。
创建空的固定集合
fs = frozenset()
创建非空的固定集合
fs(iterable) 用可迭代对象填充。
表达形式:frozenset({xxxxxx})
普通集合:{xxxxxxxx}
运算:& | - ^ in not in < <= > >= == !=(这些与set完全相同)
固定集合的方法:见help(frozenset)
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
列表,字典,集合对象的优缺点:
1.都为可变类型
2.列表的‘尾部插入’速度比较快,查‘中间插入’和‘头插入’数据速度较慢
3.列表为有序
4.字典的添加删除修改,快于列表
5.集合的添加删除快于列表,切不可重复。
用in运算符可以判断一个键是否存在与字典中,如果存在则返回True,否则返回False
not in 返回值与in相反.
【该判断方式只能判断键,不能判断值。】
列表的in运算符和字典的in运算符比较:
1.列表的in运算符计算时间会因为列中元素个数增加而增加。列表元素越多,判断越慢。
【因为其为顺序存储,需要按顺序比对】
2.字典的in运算符计算时间不会因为键值对的个数增加而增加,操作速度快于列表。
【字典的键是通过‘散列存储’储存的,通过哈希运算给定每个键的确定属性,无需比对,直接查找。】
字典的迭代访问:
容器是可迭代对象,字典只能对键进行迭代访问
d = {'name':'xiaozhao','birthday':(2008.8.8)}
for k in d:
print(k)
可以用于字典的内建函数(built-in):(只对键有作用。)
len(x) 返回字典键值对个数
max(x) 返回字典键的最大值
min(x) 返回字典键的最小值
sum(x) 返回字典键的和
any(x) 对所有键进行真值测试,有一个为True结果为True
len(x) 对所有键进行真值测试,所有为True结果为True
字典的方法:
d.clear() 清空字典
d.pop(key) 移除键,同时返回此键所对应的值。
d.copy() 复制一个字典
字典推导式:
语法:
{键表达式:值表达式 for 变量 in 可迭代对象[if 真值表达式]
字典推导式的嵌套:
同列表推导式嵌套
字典VS列表:
1. 都是可变对象
2.索引方式不同,列表用整数索引, 字典用键索引
3.字典查找速度‘可能’会快于列表(important)
4.列表储存是有序的,字典储存是无序的(散列存储)
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
集合 set:
集合是可变容器
集合内的数据对象都是唯一的(不能重复多次)
集合是无序的储存结构,集中的数据没有先后顺序呢关系
集合内的元素必须是不可变对象
集合是可迭代对象
集合是相当于只有键没有值的字典(键则是集合的数据)
创建空的集合:
set() 不能用{}
创建非空集合:
s = set(iterable)
s = {1,2,3,4} ……集合
s = {} ……字典
集合的运算:
运算符:&(交集) |(并集) -(补集) ^(对称补集) <(判断左是右的子集)
> (判断左是右的超集) == !=(集合相同和不同) >= <=(略) in / not in(略)
s1 = {1,2,3}
s2 = {2,3,4}
符号&:(交集)
s3 = s1&s2 = {2,3}
符号|:(并集)
s4 = s1 | s2 ={1,2,3,4}
符号-:(补集)
s5 = s1 - s2 = {1}
s6 = s2 - s1 ={4}
符号^:(对称补集)
s7 = s1^s2={1,4}
符号 > <(超集,子集)
{1,2,3}>{1,2}
{2,3,1}>{3,2}
能用于集合的函数:
len max min sum any all
集合是可迭代对象
python3 中集合的常用方法:
s.add(e) 添加,若已存在则不添加
s.remove(e) 删除 (若不存在,则产生错误)
s.discard(e) 从集合中移除一个元素e (若不存在 无影响)
s.clear() 清空集合
s.copy() 浅拷贝集合
s.pop() 从集合中随机删除一个元素(不存在会报错)
s.update(s2) 将集合s2中的元素添加到s中
集合推导式:
集合推导式使用可迭代对象生成集合的表达式
语法:
{表达式 for 变量 in 可迭代对象 [if 真值表达式]}
示例:
num = (1,2,3,2,2,3,3,4,5)
s = {x for x in num}
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
固定集合(frozenset)
固定集合是不可变的,无序的,含有不重复元素的集合。
作用:
固定集合可以作为字典的键,还可以作为集合的值。
创建空的固定集合
fs = frozenset()
创建非空的固定集合
fs(iterable) 用可迭代对象填充。
表达形式:frozenset({xxxxxx})
普通集合:{xxxxxxxx}
运算:& | - ^ in not in < <= > >= == !=(这些与set完全相同)
固定集合的方法:见help(frozenset)
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
列表,字典,集合对象的优缺点:
1.都为可变类型
2.列表的‘尾部插入’速度比较快,查‘中间插入’和‘头插入’数据速度较慢
3.列表为有序
4.字典的添加删除修改,快于列表
5.集合的添加删除快于列表,切不可重复。