《数据结构与算法:Python语言描述》一导读

简介: 由于Python语言的一些优点,近年来,国外已经有不少大学采用它作为第一门计算机科学技术课程的教学语言,包括许多一流大学。国内院校也可能参考这种趋势,出现这种变化。作者在北京大学数学学院开设了基于Python语言的程序设计和数据结构课程,通过亲身实践,发现用Python讲授这两门课程也是一种很好的安排。


abbc3629978500b0187f28c9a54826b7403d1059

前 言

本书基于作者在北京大学用Python讲授相应课程的工作,用Python作为工作语言讨论数据结构和算法的基本问题,其撰写主要有下面几方面考虑:
作为以Python为第一门计算机课程之后相应的数据结构课程的教材。
结合数据结构和算法,讨论Python中重要数据类型的实现情况和性质,帮助读者理解Python语言程序,理解如何写出高效的Python程序。
展示Python的面向对象技术可以怎样运用。书中构造了一批相互关联的数据结构类,前面定义的类被反复应用在后续章节的数据结构和算法中。
基于这些情况,本书不但可以作为数据结构课程的教材,也可以作为学习Python语言编程技术的后续读物(假设读者已经有了Python编程的基本知识)。
由于Python语言的一些优点,近年来,国外已经有不少大学采用它作为第一门计算机科学技术课程的教学语言,包括许多一流大学。国内院校也可能参考这种趋势,出现这种变化。作者在北京大学数学学院开设了基于Python语言的程序设计和数据结构课程,通过亲身实践,发现用Python讲授这两门课程也是一种很好的安排。
用Python学习数据结构,最大的优点就是可以看到复杂的数据结构可以怎样一步步地从基本的语言机制构造起来。在一个章节里定义的数据结构,经常可以在后续章节的算法和数据结构中直接使用,如果不适用,常常可以通过简单的类派生来调整。还可以非常方便地用在各种习题和练习里,或用于解决实际问题。学生可以看到,书中的(或他们自己写的)代码不是玩具,而是切实有用的软件构件。在基于本书的课程中,很容易安排一些有一定规模的面向实际应用的开发课题,使学生得到更好的实际锻炼。
书中标*的节或小节作为选讲内容,或留给学生自己阅读。
本书的成型也得益于作者多年讲授基于C语言的数据结构课程的经验,张乃孝老师的《算法和数据结构》是作者一直使用的教材,本书在编写中也参考了该书的一些体例。此外,北京大学数学学院2013级的同学在学习中提出了许多很好的问题,参加课程辅导工作的刘海洋、胡婷婷、张可和陈晨也提供了很多帮助,在此表示特别的感谢。

目 录

第1章绪论
1.1计算机问题求解
1.2 问题求解:交叉路口的红绿灯安排
1.3算法和算法分析
1.4数据结构
练习
第2章抽象数据类型和Python类
2.1抽象数据类型
2.2Python的类
2.3类的定义和使用
2.4Python异常
2.5类定义实例:学校人事管理系统中的类
本章总结
练习
第3章线性表
3.1线性表的概念和表抽象数据类型
3.2顺序表的实现
3.3链接表
3.4链表的变形和操作
3.5表的应用
本章总结
练习
第4章 字符串
4.1 字符集、字符串和字符串操作
4.1.1 字符串的相关概念
4.1.2 字符串抽象数据类型
4.2 字符串的实现
4.2.1 基本实现问题和技术
4.2.2 实际语言里的字符串
4.2.3 Python的字符串
4.3 字符串匹配(子串查找)
4.3.1 字符串匹配
4.3.2 串匹配和朴素匹配算法
4.3.3 无回溯串匹配算法(KMP算法)
4.4 字符串匹配问题
4.4.1 串匹配/搜索的不同需要
4.4.2 一种简化的正则表达式
4.5 Python正则表达式
4.5.1 概况
4.5.2 基本情况
4.5.3 主要操作
4.5.4 正则表达式的构造
4.5.5 正则表达式的使用
本章总结
练习

相关文章
|
6月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
392 1
|
6月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
950 1
|
7月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1002 102
|
7月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
337 103
|
7月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
284 82
|
6月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
266 4
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
1185 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
8月前
|
机器学习/深度学习 自然语言处理 数据可视化
Python:简洁而强大的通用语言
Python:简洁而强大的通用语言
|
8月前
|
机器学习/深度学习 人工智能 运维
Python:简洁高效的万能语言
Python:简洁高效的万能语言

推荐镜像

更多