第四章 介绍Python对象类型(2)
列表
列表是ython提供的最通用的序列。是一个任意类型的对象的位置相关的有序集合,可变。
序列操作
列表是序列的一种,支持所有字符串相关操作——索引、切片
特定类型的操作
- python中列表相较于其他语言中数组的最大区别——没有固定类型的约束,支持一个列表内包含多种类型
- 列表没有固定大小,能按照需要增加/减少
- append——尾部增加一位
- del/pop——移除给定索引处的数据
- insert——任意位置插入
- remove——按照值移除
- extend——尾部增加多位
- 以上操作会在原位置改变列表对象,而不是新建一个列表——可变性
- sort——列表排序,默认升序
- reverse——列表翻转
边界检查
越界会报错
嵌套
python核心数据类型支持任意嵌套——任意组合、多个层次
一个直接应用——矩阵的实现
推导
全称为列表推导表达式
列表推导创建了新的列表作为结果,但是能够在任何可迭代对象上进行迭代;例如
列表推导也可以用来创建产生所需结果的生成器
也支持用来创建集合和字典:
字典
字典不是序列,而是一种映射;
映射同样是一个其他对象的集合,但是是通过键而不是相对位置来存储对象的;实际上,映射并没有维护任何可靠的从左至右的顺序,只是简单地将键映射到相应的值上。
字典是python核心对象集合中唯一的一种映射类型,也具有可变性
映射操作
键:值
可以通过键来对字典进行索引操作;字典的索引操作使用的是和序列相同的语法,但是在方括号中的元素是键,而不是相对位置。
不同的创建字典的方法:
字典也可以用来代替搜索操作,通过键来索引一个字典往往是python中编写搜索的最快方法
字典的键从左到右的顺序是被打乱的,亦即映射不是按照位置排序的
重访嵌套
支持如下的灵活使用
在CPython中,一旦一个对象的最后一次引用被移除,空间将会立即回收
不存在的键:if操作
支持通过方法调用进行指定类型的操作
- 支持不存在的键,直接赋值
- 支持in判断是否存在
键的排序:for循环
字典不是序列,不包含任何可靠的从左至右的顺序
如果需要强调顺序,
- 可以将keys放入list中,对list进行排序、依次调用key-value
- sorted函数
迭代和优化
for循环、列表推导表达式,都是一种通用迭代工具
任何一个从左到右扫描一个对象的Python工具都适用迭代协议
列表推导和相关的函数编程工具在某些代码上通常比for循环运行得快
在python中,性能测试是一个很复杂的任务,因为一直在反复优化。python的一个主要使用原则——先让代码跑起来,确有必要情况下,再考虑性能问题
Python学习手册 文章被收录于专栏
《Python学习手册(第五版)》学习随记