产品特色
编辑推荐
不管你是程序设计爱好者、计算机专业的学生还是一位专业程序员,本书都是你通过Python编程语言学习面向对象设计和数据结构的不错的入门教程。通过清晰的示例、按部就班的讲解以及众多实用的练习,本书教你通过Python理解并使用数据结构。
● 使用多态和继承来设计集合类;
● 集合接口的多个实现;
● 不同的集合实现的时间/空间代价分析。
内容简介
在计算机科学中,数据结构是一门进阶性课程,概念抽象,难度较大。Python语言的语法简单,交互性强。用Python来讲解数据结构等主题,比C语言等实现起来更为容易,更为清晰。
《数据结构 Python语言描述》第1章简单介绍了Python语言的基础知识和特性。第2章到第4章对抽象数据类型、数据结构、复杂度分析、数组和线性链表结构进行了详细介绍,第5章和第6章重点介绍了面向对象设计的相关知识、第5章包括接口和实现之间的重点差异、多态以及信息隐藏等内容,第6章主要讲解继承的相关知识,第7章到第9章以栈、队列和列表为代表,介绍了线性集合的相关知识。第10章介绍了各种树结构,第11章讲解了集和字典的相关内容,第12章介绍了图和图处理算法。每章最后,还给出了复习题和案例学习,帮助读者巩固和思考。
《数据结构 Python语言描述》不仅适合高等院校计算机专业师生阅读,也适合对Python感兴趣的读者和程序员阅读。
作者简介
Kenneth A .Lambert是华盛顿与李大学的计算机科学教授和系主任。他教授编程课程30 年 ,并且是计算机科学教育的积极研究者。Lambert编著以及与人合著了一共2 5 本教材,包括与Douglas Nance和Thomas Naps编写的一系列C++ 入门教材,与Martin Osbor ne编写的一系列Java入门教材, 以及一系列Python入门教材。他还是《Easy GUI Progr amming in Python》的作者。
目录
第1章 Python编程基础 1
1.1 基本程序要素 1
1.1.1 程序和模块 1
1.1.2 Python程序示例:猜数字 1
1.1.3 编辑、编译并运行
Python程序 2
1.1.4 程序注释 3
1.1.5 词法元素 3
1.1.6 拼写和命名惯例 3
1.1.7 语法元素 4
1.1.8 字面值 4
1.1.9 字符串字面值 4
1.1.10 运算符和表达式 5
1.1.11 函数调用 5
1.1.12 print函数 5
1.1.13 input函数 5
1.1.14 类型转换函数和
混合模式运算 6
1.1.15 可选的和关键字
函数参数 6
1.1.16 变量和赋值语句 6
1.1.17 Python数据类型 7
1.1.18 import语句 7
1.1.19 获取关于程序组件
的帮助 7
1.2 控制语句 8
1.2.1 条件式语句 8
1.2.2 使用if __name__ ==
"__main__" 9
1.2.3 循环语句 10
1.3 字符串及其运算 10
1.3.1 运算符 10
1.3.2 格式化字符串以便输出 11
1.3.3 对象和方法调用 13
1.4 内建Python集合及其操作 13
1.4.1 列表 14
1.4.2 元组 14
1.4.3 遍历序列 14
1.4.4 字典 15
1.4.5 搜索一个值 15
1.4.6 对集合应用模式匹配 15
1.5 编写新的函数 16
1.5.1 函数定义 16
1.5.2 递归函数 17
1.5.3 嵌套的函数定义 19
1.5.4 高阶函数 19
1.5.5 使用lambda表达式
创建匿名函数 20
1.6 捕获异常 20
1.7 文件及其操作 21
1.7.1 文本文件的输出 22
1.7.2 将数字写入到一个
文本文件 22
1.7.3 从文本文件读取文本 23
1.7.4 从文件读取数字 24
1.7.5 使用pickle读写对象 24
1.8 创建新的类 25
1.9 编程项目 28
第2章 集合概览 30
2.1 集合类型 30
2.1.1 线性集合 30
2.1.2 层级集合 31
2.1.3 图集合 31
2.1.4 无序集合 31
2.1.5 有序集合 31
2.1.6 集合类型的分类 32
2.2 集合上的操作 32
2.3 集合的实现 34
2.4 小结 35
2.5 复习题 35
2.6 编程项目 36
第3章 搜索、排序和复杂度分析 37
3.1 评估算法的性能 37
3.1.1 度量算法的运行时间 37
3.1.2 统计指令 39
3.1.3 度量算法所使用的内存 41
3.1.4 练习3.1 41
3.2 复杂度分析 41
3.2.1 复杂度的阶 41
3.2.2 大O表示法 43
3.2.3 常量比例的作用 43
3.2.4 练习3.2 43
3.3 搜索算法 44
3.3.1 搜索最小值 44
3.3.2 顺序搜索一个列表 44
3.3.3 最好情况、最坏情况和
平均情况的性能 45
3.3.4 有序列表的二叉搜索 45
3.3.5 比较数据项 47
3.3.6 练习3.3 48
3.4 基本排序算法 48
3.4.1 选择排序 48
3.4.2 冒泡排序 49
3.4.3 插入排序 50
3.4.4 再谈最好情况、最坏情
况和平均情况的性能 52
3.4.5 练习3.4 52
3.5 更快的排序 53
3.5.1 快速排序简介 53
3.5.2 合并排序 56
3.5.3 练习3.5 59
3.6 指数算法:递归式的
Fibonacci 59
3.7 案例学习:算法探查器 61
3.7.1 需求 61
3.7.2 分析 61
3.7.3 设计 62
3.7.4 实现(编写代码) 63
3.8 小结 65
3.9 复习题 66
3.10 编程项目 67
第4章 数组和链表结构 69
4.1 数组数据结构 69
4.1.1 随机访问和连续内存 71
4.1.2 静态内存和动态内存 72
4.1.3 物理大小和逻辑大小 72
4.1.4 练习4.1 73
4.2 数组的操作 73
4.2.1 增加数组的大小 73
4.2.2 减小数组的大小 74
4.2.3 在数组中插入一项 74
4.2.4 从数组中删除一项 75
4.2.5 复杂度权衡:时间、
空间和数组 76
4.2.6 练习4.2 76
4.3 二维数组 77
4.3.1 处理网格 77
4.3.2 创建并初始化网格 77
4.3.3 定义Grid类 78
4.3.4 杂乱的网格和多维数组 79
4.3.5 练习4.3 79
4.4 链表结构 80
4.4.1 单链表结构和双链表
结构 80
4.4.2 非连续性内存和节点 81
4.4.3 定义一个单链表节点类 82
4.4.4 使用单链表节点类 82
4.4.5 练习4.4 84
4.5 单链表结构上的操作 84
4.5.1 遍历 84
4.5.2 搜索 85
4.5.3 替换 86
4.5.4 在开始处插入 86
4.5.5 在末尾插入 87
4.5.6 从开始处删除 87
4.5.7 从末尾删除 88
4.5.8 在任何位置插入 89
4.5.9 从任意位置删除 90
4.5.10 复杂度权衡:时间、
空间和单链表结构 91
4.5.11 练习4.5 92
4.6 链表的变体 92
4.6.1 带有一个哑头节点
的循环链表结构 92
4.6.2 双链表结构 93
4.6.3 练习4.6 95
4.7 小结 95
4.8 复习题 96
4.9 编程项目 96
第5章 接口、实现和多态 98
5.1 开发接口 98
5.1.1 定义包接口 98
5.1.2 指定参数和返回值 99
5.1.3 构造方法和实现类 101
5.1.4 先验条件、后验条件、
异常和文档 101
5.1.5 用Python编写接口 102
5.1.6 练习5.1 103
5.2 开发一个基于数组的实现 103
5.2.1 选择并初始化数据
结构 103
5.2.2 先完成容易的方法 104
5.2.3 完成迭代器 105
5.2.4 完成使用迭代器
的方法 106
5.2.5 in运算符和__contains__
方法 106
5.2.6 完成remove方法 107
5.2.7 练习5.2 107
5.3 开发一个基于链表的实现 107
5.3.1 初始化数据结构 108
5.3.2 完成迭代器 109
5.3.3 完成clear和add方法 109
5.3.4 完成remove方法 109
5.3.5 练习5.3 110
5.4 两个包实现的运行时性能 110
5.5 测试两个包实现 111
5.6 用UML图表示包资源 112
5.7 小结 113
5.8 复习题 113
5.9 编程项目 114
第6章 继承和抽象类 115
6.1 使用继承定制一个已有的类 115
6.1.1 已有类的子类化 115
6.1.2 再谈__init__方法 116
6.1.3 添加新的contains方法 117
6.1.4 修改已有的add方法 117
6.1.5 ArraySortedBag的运行
时间性能 118
6.1.6 Python中的类层级 118
6.1.7 练习6.1 119
6.2 使用抽象类去除代码冗余性 119
6.2.1 设计一个
AbstractBag类 119
6.2.2 重新编写AbstractBag
中的__init__方法 120
6.2.3 修改AbstractBag
的子类 120
6.2.4 将AbstractBag中的
__add__方法泛化 121
6.3 所有集合的一个抽象类 122
6.3.1 将AbstractCollection
整合到集合层级中 122
6.3.2 在__eq__方法中使用
两个迭代器 123
6.3.3 练习6.2 124
6.4 小结 124
6.5 复习题 124
6.6 编程项目 125
第7章 栈 127
7.1 栈概览 127
7.2 使用栈 128
7.2.1 栈接口 128
7.2.2 初始化一个栈 129
7.2.3 示例应用程序:
匹配括号 129
7.2.4 练习7.1 131
7.3 栈的3种应用 131
7.3.1 计算算术表达式 131
7.3.2 计算后缀表达式 132
7.3.3 练习7.2 133
7.3.4 将中缀表达式转换为
后缀表达式 133
7.3.5 练习7.3 135
7.3.6 回溯算法 135
7.3.7 内存管理 137
7.4 栈的实现 138
7.4.1 测试驱动程序 138
7.4.2 将栈添加到集合层级中 139
7.4.3 数组实现 140
7.4.4 链表实现 141
7.4.5 AbstractStack类的
作用 144
7.4.6 两种实现的时间和
空间分析 144
7.4.7 练习7.4 145
7.5 案例学习:计算后缀表达式 145
7.5.1 要求 145
7.5.2 分析 145
7.5.3 设计 148
7.5.4 实现 150
7.6 小结 153
7.7 复习题 153
7.8 编程项目 154
第8章 队列 156
8.1 队列概览 156
8.2 队列接口及其应用 157
练习8.1 158
8.3 队列的两个应用 159
8.3.1 模拟 159
8.3.2 轮询CPU调度 161
8.3.3 练习8.2 161
8.4 队列的实现 161
8.4.1 队列的链表实现 161
8.4.2 数组实现 163
8.4.3 两种实现的时间和
空间复杂度分析 164
8.4.4 练习8.3 165
8.5 案例学习:模拟超市排队
结账 165
8.5.1 要求 165
8.5.2 分析 165
8.5.3 用户界面 166
8.5.4 类及其作用 166
8.6 优先队列 171
练习8.4 175
8.7 案例学习:急症室调度 175
8.7.1 需求 175
8.7.2 分析 175
8.7.3 类 176
8.7.4 设计和实现 177
8.8 小结 179
8.9 复习题 179
8.10 编程项目 180
第9章 列表 182
9.1 概览 182
9.2 使用列表 183
9.2.1 基于索引的操作 183
9.2.2 基于内容的操作 183
9.2.3 基于位置的操作 184
9.2.4 列表的接口 187
9.2.5 练习9.1 188
9.3 列表的应用 188
9.3.1 堆存储管理 188
9.3.2 组织磁盘上的文件 189
9.3.3 其他集合的实现 190
9.4 列表实现 191
9.4.1 AbstractList类的角色 191
9.4.2 基于数组的实现 192
9.4.3 链表实现 194
9.4.4 两种实现的时间和
空间分析 196
9.4.5 练习9.2 197
9.5 实现列表迭代器 197
9.5.1 列表迭代器的角色
和作用 197
9.5.2 设置和实例化一个
列表迭代器类 198
9.5.3 列表迭代器中的导
航方法 199
9.5.4 列表迭代器中的修
改器方法 200
9.5.5 链表列表的列表迭
代器的设计 201
9.5.6 列表迭代器实现的
时间和空间分析 201
9.6 案例学习:开发一个有序
的列表 201
9.6.1 要求 201
9.6.2 分析 202
9.6.3 设计 202
9.6.4 实现(代码) 204
9.7 小结 205
9.8 复习题 205
9.9 编程项目 206
第10章 树 208
10.1 树的概览 208
10.1.1 树的术语 208
10.1.2 普通的树和二叉树 209
10.1.3 树的递归定义 210
10.1.4 练习10.1 210
10.2 为什么要使用树 210
10.3 二叉树的形状 211
练习10.2 213
10.4 二叉树的3种常见应用 213
10.4.1 堆 213
10.4.2 二叉搜索树 214
10.4.3 表达式树 215
10.4.4 练习10.3 216
10.5 二叉树的遍历 216
10.5.1 前序遍历 216
10.5.2 中序遍历 217
10.5.3 后序遍历 217
10.5.4 层序遍历 217
10.6 开发二叉搜索树 217
10.6.1 二叉搜索树接口 218
10.6.2 链表实现的数据结构 219
10.6.3 二叉搜索树的复杂度
分析 223
10.6.4 练习10.4 224
10.7 递归的后代解析和编程语言 224
10.7.1 语法简介 224
10.7.2 在语言中识别、解析
和解释句子 226
10.7.3 词法分析和扫描器 226
10.7.4 解析策略 227
10.8 案例学习:解析和表达式树 227
10.8.1 要求 227
10.8.2 分析 228
10.8.3 节点类的设计和实现 228
10.8.4 解析器类的设计和
实现 230
10.9 二叉树的数组实现 231
练习10.5 232
10.10 实现堆 232
练习10.6 234
10.11 小结 234
10.12 复习题 235
10.13 编程项目 236
第11章 集和字典 238
11.1 使用集 238
11.2 Python的set类 239
11.2.1 集的一个示例会话 239
11.2.2 集的应用 240
11.2.3 集和包的关系 240
11.2.4 集和字典的关系 240
11.2.5 集的实现 240
11.2.6 练习11.1 241
11.3 集的基于数组和链表的实现 241
11.3.1 AbstractSet类 241
数据结构 Python语言描述 下载 mobi epub pdf txt 电子书 格式
评分
☆☆☆☆☆
无论是快递服务和售后服务都挺不错的,重要的是商品价格和质量整体来说都还不错,促销活动时还是比较优惠的。只是,近两年的活动似乎没有前几年的活动优惠力度大了。免运费门槛年年提升。什么加重费等。还有,现在满减券也十分有限,不是那么好领取,经常看着整点也抢不到券,这一点比较郁闷。所以想买某样东西时,看着它在活动满减,但自己却老是抢不到券,只能被迫放弃了!
评分
☆☆☆☆☆
收到宝贝,不由得精神为之一振,自觉七经八脉为之一畅,我在商城打滚这么多年,所谓阅人无数,收到宝贝我只想说,京东,你实在是太好了。 你的高尚情操太让人感动了。 本人对卖家之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心。 收到货后,我的心情竟是久久不能平静。自古英雄出少年,卖家年纪轻轻,就有经天纬地之才,定国安邦之智,而今,天佑我大中华,沧海桑田5000年,神州平地一声雷,飞沙走石,大雾迷天,朦胧中,只见顶天立地一金甲天神立于天地间,花见花开,人见人爱,这人英雄手持双斧,二目如电,一斧下去,混沌初开,二斧下去,女娲造人,三斧下去,小生倾倒。得此大英雄,实乃国之幸也,民之福,人之初也,怎不叫人喜极而泣 .......看着宝贝,我竟产生出一种无以名之的悲痛感——啊,这么好的宝贝,如果将来我再也买不到了,那我该怎么办?直到我毫不犹豫地把这个宝贝收藏了,我内心的那种激动才逐渐平静下来。 可是我立刻想到,这么好的宝贝,倘若别人看不到,那么不是浪费易迅的心血吗?经过痛苦的思想斗争,我终于下定决心,牺牲小我,奉献大我。我要以此好评奉献给世人赏阅,我要给好评、给好评……评到所有人都看到为止
评分
☆☆☆☆☆
2、从有基础的人,或学过C、C++的人来看,书里的内容又啰嗦,方向性又不强,误人子弟(有从事编程经验或学过C的人都很辛苦,学习流程和框架,和这本书一对比就会发现书里的内容完全就是这里说一点,那里说一点,最后学完后都不知道能干什么,因为学到的都很浅,做不了项目)
评分
☆☆☆☆☆
缺点:
评分
☆☆☆☆☆
书山有路勤为径,学海无涯苦作舟。还是要多多学习,不要浪费时间。有时间就看书和运动。
评分
☆☆☆☆☆
老公的书都是这么又厚又重~养我的大业真是任重道远啊~书看起来是挺好的~反正我看不懂~还是拍了目录给买书的人参考~看不清不能怪我~毕竟我拍照技术也略有欠缺~哈哈哈哈哈
评分
☆☆☆☆☆
答主最后重申观点:这本不适
评分
☆☆☆☆☆
和此卖家交流,不由得精神为之一振,自觉七经八脉为之一畅,我在JD买了这么多年,所 谓阅商无数,但与卖家您交流,我只想说,老板你实在是太好了,你的高尚情操太让人感动 了,本人对此卖家之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心。交易成功 后,我的心情是久久不能平静,自古英雄出少年,卖家年纪轻轻,就有经天纬地之才,定国 安邦之智,而今,天佑我大中华,沧海桑田 5000 年,神州平地一声雷,飞沙走石,大雾迷 天,朦胧中,只见顶天立地一金甲天神立于天地间,花见花开,人见人爱,这位英雄手持双 斧,二目如电,一斧下去,混沌初开,二斧下去,女娲造人,三斧下去,小生倾倒。得此大 英雄,实乃国之幸也,民之福,人之初也,怎不叫人喜极而泣……看着交易成功,我竟产生 出一种无以名之的悲痛感——啊, 这么好的卖家, 如果将来我再也遇不到了, 那我该怎么办? 直到我毫不犹豫地把卖家的店收藏了, 我内心的那种激动才逐渐平静下来, 可是我立刻想到, 这么好的卖家,倘若别人看不到,那么不是浪费心血吗?经过痛苦的思想斗争,我终于下定 决心,牺牲小我,奉献大我。我要以此评价奉献给世人赏阅,我要给好评……
评分
☆☆☆☆☆
1、作为0基础入门比较好,内容基本都看的懂,按照上面的指导再结合练习题,有可以一步一步往下走的感觉