目录
14序列
14.1列表、元组、字符串共同点
(1) 都可以通过索引获取每一个元素
(2)第一个元素的索引值都是0
(3)都可会通过切片的方法获取一个范围
(4)都有很多共同的运算符
列表、元组、字符串 python把他们都统一称为字符串
可变序列(列表) 不可变序列(元组、字符串)
14.2能够作用于序列的一些运算符和函数
14.2.1 + *
对于增量赋值
id函数返回一个代表指定对象的唯一标识的整数值
对于对象是一个不可变的序列id值不一样了
14.2.2 is 和 is not
用于检测对象的id值是否相等,从而判断是否是一个对象(同一性运算符)
14.2.3 in 和 not in
判断包含问题
in运算符用于判断某个元素是否包含在序列中,not in 相反.
14.2.4 del语句
用于删除一个或多个指定的对象
可删除可变序列中的指定元素
清空列表的元素
14.3跟序列相关的一些函数
14.3.1列表、元组和字符串相互转换
list() | 将一个可迭代对象转换成列表 |
tuple() | 将可迭代对象转换为元组 |
str() | 将可迭代对象转化为字符串 |
14.3.2 min() 和 max()
min() | 对比传入的参数,并且返回最小值 |
max()![]() | 对比传入的参数,并且返回最大值![]() |
如果是空列表就会报错
我们可以用default来缓和
14.3.3 len() 和 sum()
len()有一个最大的可承受范围,len函数参数太大导致报错
sum函数
14.3.4 sorted() 和 reversed()
sorted()函数也支持key和reverse两个参数
排序后翻转
单独传入t列表,对比每一个元素,对比的是字符串的每一个元素的编码值.
key参数指定的是一个干预排序算法的函数
python会在排序的过程中,先将列表中的每一个元素自动调用一次len函数.然后比较的是len()函数返回的结果.
所以sorted(t,key = len)比较的是长度
reversed函数返回的是一个参数的反向迭代器
14.3.5 all() 和 any()
all函数
判断可迭代对象中是否所有元素的值都为真
any函数
判断可迭代对象中是否存在某个元素的值为真
14.3.6 enumerate()
start参数可以自定义这个序号开始的值
14.3.7 zip()
如果传入的可迭代对象长度不一致,会出现什么情况
把e丢掉了.那如果我的e很重要不能丢掉怎么办?
我们就可以使用一个叫做itertools的模块,里面有一个zip_longest()函数.可以使用这个来代替zip
14.3.8 map()
第一个参数是指定一个函数,这个函数是ord.map函数作用是对随后提供的可迭代对象进行加工.
ord函数作用是将一个字符转化成对应的一个编码值.字符是从后面的这个可迭代对象中获取.这里是love.
工作流程:每次从字符串"love"里面提取一个字符,然后交给ord函数,转化得到对应的编码值后,再将这个结果保存起来.最后得到的是"love"获得的一个编码值的一个组合.
那ord需要一个参数,那如果提供的函数需要两个参数或者多个参数怎么办?
我们只需要同步去修改后面提供的可迭代对象的数量就行了.
14.3.9 filter()
filter函数返回的是计算结果为真的元素构成的迭代器
将字符串中小写过滤出来啦~
14.4迭代器 vs 可迭代对象
有没有途径是可迭代对象变为一次性的迭代器?
iter()函数
next()函数 逐个将迭代器中的元素给提取出来
不想让抛出异常的话可以给next函数传入第二个参数
15.字典
字典的关键符号是大括号!还有:
两对映射关系
:左边称之为字典的键 :右面为字典的值
在字典中,只要我们提供键就可以获取其对应的值
我们可以通过指定一个不存在于字典中的"键"来创建一个新的键值对
15.1创建字典
15.1.1 使用{}和:的组合将映射关系套牢
15.1.2使用dict()函数-用来生成字典.它的每个参数就是一个对应的键值对,键与值之间直接使用等号挂钩.
这种写法要求不能往键上加引号
15.1.3使用列表作为参数,列表中的每个元素是使用元组包裹起来的键值对
15.1.4将第一种方法作为参数传递给这个dict
15.1.5混合
15.1.6用zip函数
他们都是相等的
15.2字典增删查改
15.2.1 增
它可以使用iterable参数指定的可迭代对象来创建一个新的字典,并将所有的值初始化为values参数指定的值
存放四组映射关系的一个字典.适用于从无到有创建一个所有键的值都相同的字典.
修改键值
增加键值对
15.2.2删
返回指定的键对应的值
然后查看d,发现s不见了
如果pop一个不存在的键就会抛出异常
popitem()
python3.7前是随机删除一个键值对,python3.7之后它删除的是最后一个加入字典的键值对.
del也可删除指定的元素
只要清空内容用clear
15.2.3改
update([other] 支持同时给他传入多个键值对,也可以直接给他传入另外一个字典或者一个包含键值对的可迭代对象
15.2.4查
get(key[,default])
setdefault(key[,default])
items() 获取字典键值对
keys() 获取键
values()获取值
获取三者的视图对象
当字典内容改变,三者也会改变
copy()
len() 获取字典中键值对的数量
in 和 not in 判断某个键是否存在于字典中
字典可以转化为列表
iter() 将字典变为一个迭代器