一,对第二章的收尾
用 array.fromfile 从一个二进制文件里读出 1000 万个双精度浮点数只需要 0.1 秒,这比从文本文件里读取的速度要快 60 倍,因为后者会使用内置的float 方法把每一行文字转换成浮点数。 使用 array.tofile 写入到二进制文件,比以每行一个浮点数的 方式把所有数字写入到文本文件要快 7 倍。 另外一个快速序列化数字类型的方法是使用 pickle,pickle.dump 处理浮点数组的速度几乎跟 array.tofile 一 样快。不过前者可以处理几乎所有的内置数字类型,包含复数、嵌 套集合,甚至用户自定义的类。前提是这些类没有什么特别复杂的实现。
2.内存视图
memoryview() 函数返回给定参数的内存查看对象(memory view)。
所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。
3.Numpy和Scipy
arange()类似于python的内置函数range(),通过指定开始值、终值和步长来创建表示等差数列的一维数组,返回给定间隔内的均匀间隔值,注意得到的结果数组不包含终值。
数组的shape属性就如同它的名字一样,反映的是数组的“形状”。 对于一维数组,反映的是一个维度上的元素数量,类似“长度”; 对于二维数组,反映的是两个维度上分别的元素数量,类似“长度”和“宽度”; 对于三维数组,反映的是三个维度上分别的元素数量,类似“长度”、“宽度”和“高度”。 对于四维以及更高的维度,虽然无法准确地用词语来表示每一个维度的名字,但其shape属性同样反映的是每一个维度上分别的元素数量。
4.双向队列和其他形式的队列
collections.deque 类(双向队列)是一个线程安全、可以快速从两 端添加或者删除元素的数据类型。而且如果想要有一种数据类型来存 放“最近用到的几个元素”,deque 也是一个很好的选择。这是因为在新 建一个双向队列的时候,你可以指定这个队列的大小,如果这个队列满 员了,还可以从反向端删除过期的元素,然后在尾端添加新的元素。
二,正式开始第三章
3.1泛映射类型
collections.abc 模块中有 Mapping 和 MutableMapping 这两个抽象 基类,它们的作用是为 dict 和其他类似的类型定义形式接口。
标准库里的所有映射类型都是利用 dict 来实现的,因此它们有个共同的限制,即只有可散列的数据类型才能用作这些映射里的键。(如果一个对象是可散列的,那么在这个对象的生命周期中,它 的散列值是不变的,而且这个对象需要实现 __hash__() 方 法。另外可散列对象还要有 __qe__() 方法,这样才能跟其他键做比较。如果两个可散列对象是相等的,那么它们的散列值一定是一样的) 原子不可变数据类型(str、bytes 和数值类型)都是可散列类 型,frozenset 也是可散列的,因为根据其定义,frozenset 里 只能容纳可散列类型。元组的话,只有当一个元组包含的所有元素 都是可散列类型的情况下,它才是可散列的。 一般来讲用户自定义的类型的对象都是可散列的,散列值就是它们 的 id() 函数的返回值,所以所有这些对象在比较的时候都是不相 等的。如果一个对象实现了 __eq__ 方法,并且在方法中用到了这 个对象的内部状态的话,那么只有当所有这些内部状态都是不可变 的情况下,这个对象才是可散列的。
3.2字典推导
字典推导 (dictcomp)可以从任何以键值对作为元素的可迭代对象中构建出字 典。
3.3常见的映射方法
enumerate()说明 enumerate()是python的内置函数 enumerate在字典上是枚举、列举的意思 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。enumerate多用于在for循环中得到计数。
Python 字典中一个 方法 setdefault() 来看下说明 setdefault(key[, default]) If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None. 字典中 有一个方法, 如果 对于字典中已经有这个key , 直接 return 这个 key 对对应的值, 如果没有 key,会加入这个key , setdefault(key[, default]) 并且可以指定 一个默认值, 如果没有指定, 则认为是None 返回, 如果 指定了default 则直接返回 default值 如果有这个key,直接返回字典中对应的key 的值 ,即使设置了default ,也不会返回default, 而是返回 key 对应的value 3.4映射的弹性键查询