出版者的话
译者序
前言
第1章 程序设计的基本元素1
1.1 你的第一个程序1
1.1.1 Python程序设计2
1.1.2 输入和输出4
1.1.3 问题和解答5
1.1.4 习题8
1.2 内置数据类型8
1.2.1 相关术语9
1.2.2 字符串14
1.2.3 整数16
1.2.4 浮点数18
1.2.5 布尔值20
1.2.6 比较22
1.2.7 函数和API24
1.2.8 数据类型转换26
1.2.9 小结28
1.2.10 问题和解答(字符串)28
1.2.11 问题和解答(整数)30
1.2.12 问题和解答(浮点数)31
1.2.13 问题和解答32
1.2.14 习题34
1.2.15 创新习题35
1.3 选择结构和循环结构37
1.3.1 if语句38
1.3.2 else子句39
1.3.3 while语句40
1.3.4 for语句44
1.3.5 语句嵌套46
1.3.6 应用实例48
1.3.7 循环和中断55
1.3.8 死循环56
1.3.9 小结57
1.3.10 问题和解答58
1.3.11 习题60
1.3.12 创新习题63
1.4 数组65
1.4.1 Python中的数组66
1.4.2 数组别名和拷贝70
1.4.3 Python对数组操作提供的系统支持71
1.4.4 一维数组应用实例73
1.4.5 二维数组80
1.4.6 二维数组应用实例:自回避随机行走84
1.4.7 小结87
1.4.8 问题和解答(字符串)87
1.4.9 习题88
1.4.10 创新习题89
1.5 输入和输出92
1.5.1 鸟瞰图93
1.5.2 标准输出95
1.5.3 标准输入97
1.5.4 重定向和管道100
1.5.5 标准绘图104
1.5.6 动画111
1.5.7 标准音频113
1.5.8 小结115
1.5.9 问题和解答116
1.5.10 习题118
1.5.11 创新习题121
1.6 应用案例:随机Web冲浪模型123
1.6.1 输入格式124
1.6.2 转换矩阵125
1.6.3 模拟126
1.6.4 混合马尔可夫链130
1.6.5 经验总结134
1.6.6 习题135
1.6.7 创新习题136
第2章 函数和模块137
2.1 定义函数137
2.1.1 调用和定义函数138
2.1.2 实现数学函数145
2.1.3 使用函数组织代码147
2.1.4 传递参数和返回值149
2.1.5 实例:声波的叠加152
2.1.6 问题和解答156
2.1.7 习题158
2.1.8 创新习题160
2.2 模块和客户端163
2.2.1 使用其他程序中的函数164
2.2.2 模块化程序设计的抽象概念168
2.2.3 随机数172
2.2.4 数组处理API174
2.2.5 迭代函数系统176
2.2.6 标准统计179
2.2.7 模块化程序设计184
2.2.8 问题和解答186
2.2.9 习题188
2.2.10 创新习题189
2.3 递归191
2.3.1 你的第一个递归程序192
2.3.2 数学归纳法194
2.3.3 欧几里得算法194
2.3.4 汉诺塔195
2.3.5 函数调用树196
2.3.6 指数时间198
2.3.7 格雷码199
2.3.8 递归图形200
2.3.9 布朗桥202
2.3.10 递归的陷阱205
2.3.11 展望207
2.3.12 问题和解答207
2.3.13 习题208
2.3.14 创新习题209
2.4 案例研究:渗透原理212
2.4.1 渗透原理213
2.4.2 基本脚手架代码214
2.4.3 垂直渗透215
2.4.4 测试217
2.4.5 估计概率220
2.4.6 渗透原理的递归解决方案221
2.4.7 自适应绘制图形224
2.4.8 经验总结227
2.4.9 问题和解答(字符串)228
2.4.10 习题229
2.4.11 创新习题230
第3章 面向对象的程序设计232
3.1 使用数据类型232
3.1.1 方法233
3.1.2 字符串处理234
3.1.3 字符串处理应用:基因组学237
3.1.4 用户自定义数据类型237
3.1.5 颜色242
3.1.6 数字图像处理244
3.1.7 输入和输出(进一步讨论)252
3.1.8 内存管理257
3.1.9 问题和解答258
3.1.10 习题259
3.1.11 创新习题261
3.2 创建数据类型264
3.2.1 数据类型的基本元素264
3.2.2 秒表270
3.2.3 直方图272
3.2.4 海龟绘图273
3.2.5 递归图形276
3.2.6 复数280
3.2.7 曼德布洛特集合281
3.2.8 商业数据处理285
3.2.9 问题和解答288
3.2.10 习题290
3.2.11 创新习题293
3.3 设计数据类型296
3.3.1 设计API297
3.3.2 封装299
3.3.3 不可变性303
3.3.4 实例:空间向量305
3.3.5 元组308
3.3.6 多态性309
3.3.7 重载310
3.3.8 函数是对象315
3.3.9 继承315
3.3.10 应用:数据挖掘316
3.3.11 契约式设计321
3.3.12 问题和解答322
3.3.13 习题323
3.3.14 数据类型设计习题324
3.3.15 创新习题325
3.4 案例研究:多体模拟325
3.4.1 多体模拟326
3.4.2 问题和解答332
3.4.3 习题333
3.4.4 创新习题333
第4章 算法和数据结构334
4.1 性能334
4.1.1 观察335
4.1.2 假说335
4.1.3 增长量级分类340
4.1.4 预测343
4.1.5 注意事项345
4.1.6 性能保证346
4.1.7 Python列表和数组347
4.1.8 字符串349
4.1.9 内存351
4.1.10 展望354
4.1.11 问题和解答355
4.1.12 习题357
4.1.13 创新习题361
4.2 排序和查找363
4.2.1 二分查找法363
4.2.2 插入排序算法369
4.2.3 归并排序算法374
4.2.4 Python系统排序方法377
4.2.5 应用:频率计数378
4.2.6 经验总结380
4.2.7 问题和解答381
4.2.8 习题382
4.2.9 创新习题383
4.3 栈和队列385
4.3.1 下堆栈(后进先出栈)386
4.3.2 基于Python列表(可变数组)实现栈387
4.3.3 基于链表实现栈389
4.3.4 堆栈的应用394
4.3.5 FIFO队列398
4.3.6 队列的应用402
4.3.7 资源分配404
4.3.8 问题和解答406
4.3.9 习题407
4.3.10 链表习题409
4.3.11 创新习题411
4.4 符号表415
4.4.1 符号表API415
4.4.2 符号表客户端417
4.4.3 基本符号表实现422
4.4.4 哈希表424
4.4.5 二叉搜索树426
4.4.6 BST的性能特点432
4.4.7 BST的遍历434
4.4.8 可迭代对象434
4.4.9 有序符号表操作436
4.4.10 字典数据类型437
4.4.11 集合数据类型437
4.4.12 展望438
4.4.13 问题和解答439
4.4.14 习题439
4.4.15 二叉树习题442
4.4.16 创新习题444
4.5 案例研究:小世界现象447
4.5.1 图448
4.5.2 图数据类型451
4.5.3 Graph客户端例子454
4.5.4 图的最短路径457
4.5.5 小世界图464
4.5.6 经验总结470
4.5.7 问题和解答471
4.5.8 习题471
4.5.9 创新习题473
后记477
词汇表479
索引482
应用程序编程接口512