8.7 列表工具

许多数据结构需要通过内置列表类型来满足。但,有时候在不同的性能取舍需要选择一个实现。

Array模块能提供一个像列表的array对象,它只能存储同类数据而且更加简洁。

接下来样例展示了一个数字数组。

存储是2个字节的无标识的二进制数据而不是在python对象中普通列表中的每一个16字节的值。

>>> from array import array

>>> a = array(’H’, [4000, 10, 700, 22222])

>>> sum(a)

>>> a[1:3]

array(’H’, [10, 700])

Collections模块通过方法depue()提供了一个类似列表对象。它从左边開始能更加高速加入和删除,可是在中间查询时非常慢。这些对象非常适合实现队列和广度优先查询。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3hiMDg0MTkwMTExNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

除了取代列表实现之外。标准库还提供了其它工具,比方处理排序列表的bisect模块。

>>> import bisect

>>> scores = [(100, ’perl’), (200, ’tcl’), (400, ’lua’), (500, ’python’)]

>>> bisect.insort(scores, (300, ’ruby’))

>>> scores

[(100, ’perl’), (200, ’tcl’), (300, ’ruby’), (400, ’lua’), (500, ’python’)]

Headpq模块为基于正规列表的堆实现提供了函数。

最小的值入口总是在位置0上。这对那些希望反复訪问最小元素而不像做一次完毕列表排序的应用过程序非常实用。

>>> from heapq import heapify, heappop, heappush

>>> data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]

>>> heapify(data) # rearrange the list into heap order

>>> heappush(data, -5) # add a new entry

>>> [heappop(data) for i in range(3)] # fetch the three smallest entries

[-5, 0, 1]

8.8 十进制浮点数计算

十进制模块提供了对十进制浮点数计算的Decimal数据类型。

相比于内置的二进制float浮点实现,此类更加有助于下面情况:

l 须要精确十进制位数表示的財务系统或者其它用途。

l 控制精度

l 控制保留位数以来满足法律或者管理需求

l 重大十进制数的跟踪

l 那些用户想要控制数学计算结果的应用程序

比如,计算在70美分电话费中5%的税收,在十进制和二进制浮点数不同可能导致不同额结果。

假设要对最接近的分钟数进行舍入,这样的区别就变得非常重要。

Decimal模块为算术运算提供了高精度的须要

>>> from decimal import*

>>> round(Decimal(’0.70’)*Decimal(’1.05’), 2)

Decimal(’0.74’)

>>> round(.70*1.05, 2)  0.73

Python3.2官方文件翻译-工具列表和十进制浮点计算的更多相关文章

  1. Python3.2官方文件翻译--课堂笔记和异常是阶级

    6.7备注 有时喜欢Pasca在"录"和C中"数据体"的数据类型很实用.集合一些数据项. 一个空类定义能够清楚地显示: class Employee: pass ...

  2. 【转】Python 爬虫的工具列表【预】

    这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...

  3. 洗礼灵魂,修炼python(52)--爬虫篇—【转载】爬虫工具列表

    与爬虫相关的常用模块列表. 原文出处:传送门链接 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...

  4. Python 爬虫的工具列表 附Github代码下载链接

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  5. Python 爬虫的工具列表大全

    Python 爬虫的工具列表大全 这个列表包含与网页抓取和数据处理的Python库.网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pyc ...

  6. 资源:开源Fuzzers工具列表 (以及其它fuzzing工具)

    开源fuzzers‍ / 开源fuzzing工具的最新列表(Fuzzers,没有标准中文翻译,可以理解为模糊测试工具或者模糊器) 如果你知道有需要添加的部分,那么请在这里或在推特上@Peerlyst来 ...

  7. Python 爬虫的工具列表

    这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab - 网络库(基于pycurl). pycurl - 网络 ...

  8. [转] Python 爬虫的工具列表 附Github代码下载链接

    转自http://www.36dsj.com/archives/36417 这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests - ...

  9. Hive 官方手册翻译 -- Hive DDL(数据定义语言)

    Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache ...

随机推荐

  1. Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题

    近期在知乎看到一句话,保持学习的有一种是你看到了很多其它的牛人,不甘心,真的不甘心. Spring和hibernate整合的时候,jsp页面做展现,发现展现属性出现: org.apache.jaspe ...

  2. Android Tombstone/Crash的log分析和定位

    有一句话叫做常在河边走,哪有不湿鞋.我们这些研究和开发Android的project师正应了这句话,相必大家在调试的时候常常会遇到这么个东西吧 *** *** *** *** *** *** *** ...

  3. Hibernate Tomcat JNDI数据源配置(转)

    简述: 配置JNDI 查找Tomcat 中server.xml中定义的数据源 步骤: 1. 修改elipse的数据源server.xml 主要修改如下, 1. 添加下面这段Context文本 其中St ...

  4. 安卓反汇编工具arm-eabi-objdump

    安卓反汇编工具 在Arm平台系统自带的反编译工具在android/prebuild/linux-/toolchail/arm-abil-/bin目录下的arm_eabi-objdump进行反汇编 ar ...

  5. [Windows Phone] 以多国语言做为开发前提 (2)

    原文:[Windows Phone] 以多国语言做为开发前提 (2) ? 前言 在先前的文章 [Windows Phone 开发 - 以多国语言做为开发前提 (1)] 中说明了简单的多国语言范例,今天 ...

  6. checkbox的attr("checked")一直以来,undefined问题解决

    最近,屌丝要项目开发的需要,需要一个完整的选checkbox特征. 该死的~~这不是很easy什么东西,共checkbox,N多个子的checkbox,总checkbox一旦选定,儿checkbox所 ...

  7. java.io.FileNotFoundException: /home/hadoop/hadoop/dfs/namenode/current/VERSION (Permission denied)

    今天布置hadoop集群,尝试单独将secondarynamenode分属到一台独立的虚拟机上, 当格式化后,start-dfs.sh.namenode没启动.查看日志.报错例如以下 查看权限才发现, ...

  8. Redis c/c++, java client连接

    Redis 介绍 redis这个想必大家都了解,关于redis的安装參考这里,redis使用文档參见这里,英文文档. Redis Cclient的用法 Redis的cclient Hiredis使用比 ...

  9. 15一个NoSql数据库

    随着因特网web2.0该网站的兴起.非关系型数据库,现在已经成为一个非常受欢迎的新领域.非关系数据库产品的发展非常迅速.而在处理传统的关系数据库web2.0现场.特别是大规模,高并发SNS类型web2 ...

  10. android数据访问模式:档、SharedPreferences

    android数据访问模式:档.SharedPreferences.SQLite 数据库.Content provider 文件流: 使用java IO流对文件进行读写操作,文件权限默认. 指定文件权 ...