
Python 进阶
相对于 Python 入门,本系列文章为进阶篇。
山药鱼儿
夫学须静也,才须学也,非学无以广才,非志无以成学
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第三章(提炼)字典和集合(三)
一. 集合论1.1 结合字面量1.2 集合推导1.3 集合的操作二. dict和set的背后2.1 一个关于效率的实验2.2 字典中的散列表2.3 dict实现原理及其导致的结果2.4 set实现原理及其导致的结果三. 总结...原创 2020-04-07 10:36:15 · 267 阅读 · 0 评论 -
第三章(提炼)字典和集合(二)
一. 映射的弹性键查询 某个键在映射里不存在,我们也希望在通过这个键读取值的时候能得到一个默认值。有两个途径能帮我们达到这个目的,一个是通过 defaultdict 这个类型而不是普通的 dict,另一个是给自己定义一个 dict 的子类,然后在子类中实现 __missing__ 方法。1.1defaultdict:处理找不到的键的一个选择 在实例化一个 ...原创 2020-04-06 21:10:58 · 262 阅读 · 0 评论 -
第三章(提炼)字典和集合(一)
dict 类型不但在各种程序里广泛使用,它也是 Python 语言的基石。模块的命名空间、实例的属性和函数的关键字参数中都可以看到字典的身影。跟它有关的内置函数都在 __builtins__.__dict__模块中。 正是因为字典至关重要,Python 对它的实现做了高度优化,而散列表则是字典类型性能出众的根本原因。集合(set)的实现其实也依赖于散列表,因此本...原创 2020-04-05 21:56:59 · 257 阅读 · 0 评论 -
第二章(提炼) 序列构成的数组(四)
一. 用bisect来管理已排序的序列 bisect 模块包含两个主要函数,bisect 和 insort,两个函数都利用二分查找算法来在有序序列中查找或插入元素。1.1 用bisect来搜索演示1在有序序列中用 bisect 查找某个元素的插入位置二. 当列表不是首选时三. 总结...原创 2020-04-05 20:09:00 · 518 阅读 · 0 评论 -
第二章(提炼) 序列构成的数组(三)
一. 对序列使用+和* Python 程序员会默认序列是支持 + 和 * 操作的。通常 + 号两侧的序列由相同类型的数据所构成,在拼接的过程中,两个被操作的序列都不会被修改,Python 会新建一个包含同样类型数据的序列来作为拼接的结果。 如果想要把一个序列复制几份然后再拼接起来,更快捷的做法是把这个序列乘以一个整数。+ 和 * 都遵循这个规律,不修改原有的操...原创 2020-04-04 17:09:08 · 309 阅读 · 0 评论 -
第二章(提炼) 序列构成的数组(二)
元组除了用作“不可变的列表”,还可以用于记录没有字段名的记录。一. 元组不仅仅是不可变列表1.1 元组和记录 元组其实是对数据的记录:元组中的每个元素都存放了记录中的一个字段,外加这个字段的位置。正是这个位置信息给数据赋予了意义。如果只把元组理解为不可变列表,那其它信息——它所含有的元素的总数和它们的位置,似乎就变得可有可无。但是如果把元组当作一些字段的集合,那么数量和位...原创 2020-04-04 13:25:58 · 352 阅读 · 0 评论 -
第二章(提炼) 序列构成的数组(一)
一. 内置序列类型 Python标准库用C实现了丰富的序列类型:容器序列:list、tuple和collections.deque这些序列能存放不同类型的数据; 扁平序列:str、bytes、bytearray、memoryview和array.array,这类序列只能容纳一种类型; 容器序列存放的是它们所包含的任意类型对象的引用,而扁平序列存放的是值而不是...原创 2020-04-03 15:52:33 · 300 阅读 · 0 评论 -
第一章(提炼) Python数据模型
Python风格的关键完全体现在Python的数据模型上,而数据模型所描述的API,为使用最地道的语言特性来构建开发者自己的对象提供了工具。当Python解析器遇到特殊句法时,会使用特殊方法去激活一些基本的对象操作。特殊方法以双下划线开头,以双下划线结尾(如:__getitem__)。如:obj[key]的背后就是__getitem__方法。魔术方法是特殊方法的昵称,特殊方法也叫双...原创 2020-04-02 21:58:02 · 291 阅读 · 0 评论