‌《Fluent Python》读书记:深入3.1章节‌

一,对第二章的收尾

  1. 使用数组

用 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映射的弹性键查询

  1. defaudict Python中通过Key访问字典,当Key不存在时,会引发‘KeyError’异常。为了避免这种情况的发生,可以使用collections类中的defaultdict()方法来为字典提供默认值。 语法格式: collections.defaultdict([default_factory[, …]]) 该函数返回一个类似字典的对象。defaultdict是Python内建字典类(dict)的一个子类,它重写了方法_missing_(key),增加了一个可写的实例变量default_factory,实例变量default_factory被missing()方法使用,如果该变量存在,则用以初始化构造器,如果没有,则为None。其它的功能和dict一样。 第一个参数为default_factory属性提供初始值,默认为None;其余参数包括关键字参数(keyword arguments)的用法,和dict构造器用法一样。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空