笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

11.7. 列表工具

发布者: 三寸日光

很多数据结构可能会用到内置列表类型。然而,有时可能需要不同性能代价的实现。

array模块提供了一个类似列表的 对象,它仅仅是存储数据,更为紧凑。以下的示例演示了一个存储双字节无符号整数的数组(类型编码 )而非存储 16 字节 Python 整数对象的普通正规列表:array()"H"

>>> from array import array
>>> a = array('H', [4000, 10, 700, 22222])
>>> sum(a)
26932
>>> a[1:3]
array('H', [10, 700])

collections模块提供了类似列表的 对象,它从左边添加(append)和弹出(pop)更快,但是在内部查询更慢。这些对象更适用于队列实现和广度优先的树搜索:deque()

>>> from collections import deque
>>> d = deque(["task1", "task2", "task3"])
>>> d.append("task4")
>>> print "Handling", d.popleft()
Handling task1

unsearched = deque([starting_node])
def breadth_first_search(unsearched):
    node = unsearched.popleft()
    for m in gen_moves(node):
        if is_goal(m):
            return m
        unsearched.append(m)

除了链表的替代实现,该库还提供了 这样的模块以操作存储链表: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')]

heapq提供了基于正规链表的堆实现。最小的值总是保持在 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]


最新评论

Python3编程手册
  1. Python 入门指南

  2. 1. 开胃菜

  3. 2.1. 调用 Python 解释器

  4. 2.2. 解释器及其环境

  5. 3. Python 简介

  6. 3.1. 将 Python 当做计算器

  7. 3.2. 编程的第一步

  8. 4. 深入 Python 流程控制

  9. 4.1. if 语句

  10. 4.2. for 语句

  11. 4.3. range() 函数

  12. 4.4. break 和 continue 语句

  13. 4.5. pass 语句

  14. 4.6. 定义函数

  15. 4.7. 深入 Python 函数定义

  16. 4.8. 插曲:编码风格

  17. 5. 数据结构

  18. 5.1. 关于列表更多的内容

  19. 5.2. del 语句

  20. 5.3. 元组和序列

  21. 5.4. 集合

  22. 5.5. 字典

  23. 5.6. 循环技巧

  24. 5.7. 深入条件控制

  25. 5.8. 比较序列和其它类型

  26. 6. 模块

  27. 6.1. 深入模块

  28. 6.2. 标准模块

  29. 6.3. dir() 函数

  30. 6.4. 包

  31. 7. 输入和输出

  32. 7.1. 格式化输出

  33. 7.2. 文件读写

  34. 8. 错误和异常

  35. 8.1. 语法错误

  36. 8.2. 异常

  37. 8.3. 异常处理

  38. 8.4. 抛出异常

  39. 8.5. 用户自定义异常

  40. 8.6. 定义清理行为

  41. 8.7. 预定义清理行为

  42. 9. 类

  43. 9.1. 术语相关

  44. 9.2. Python 作用域和命名空间

  45. 9.3. 初识类

  46. 9.4. 一些说明

  47. 9.5. 继承

  48. 9.6. 私有变量

  49. 9.7. 补充

  50. 9.8. 异常也是类

  51. 9.9. 迭代器

  52. 9.10. 生成器

  53. 9.11. 生成器表达式

  54. 10. Python 标准库概览

  55. 10.1. 操作系统接口

  56. 10.2. 文件通配符

  57. 10.3. 命令行参数

  58. 10.4. 错误输出重定向和程序终止

  59. 10.5. 字符串正则匹配

  60. 10.6. 数学

  61. 10.7. 互联网访问

  62. 10.8. 日期和时间

  63. 10.9. 数据压缩

  64. 10.10. 性能度量

  65. 10.11. 质量控制

  66. 10.12. “瑞士军刀”

  67. 11. 标准库浏览

  68. 11.1. 输出格式

  69. 11.2. 模板

  70. 11.3. 使用二进制数据记录布局

  71. 11.4. 多线程

  72. 11.5. 日志

  73. 11.6. 弱引用

  74. 11.7. 列表工具

  75. 11.8. 十进制浮点数算法

  76. 12. 接下来?

  77. 13. 交互式输入行编辑历史回溯

  78. 13.1. 行编辑

  79. 13.2. 历史回溯

  80. 13.3. 快捷键绑定

  81. 13.4. 其它交互式解释器

  82. 14. 浮点数算法:争议和限制

  83. 14.1. 表达错误

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-5-20 06:02 , Processed in 0.091442 second(s), 18 queries .

© 2001-2020

返回顶部