在计算机科学中,数据结构是一门进阶性课程,概念抽象,难度较大,很多人都认为数据结构的学习异常棘手。 但你要知道,了解数据结构与算法是透彻理解计算机科学的前提,并且,对于计算机专业的学生而言,它是一门"不能挂"的专业必修课,对于软件开发人员而言,它是一种谋生必备技能,我们不得不学。 那么,我们怎么样才能更加容易地学习数据结构呢? 可以肯定的是,Python能够帮助我们。这也是异步君本次推荐《数据结构 Python语言描述(第2版)》的原因。 1
谈谈为什么要通过 Python学习数据结构 当然,数据结构和Python是相辅相成。 一来,Python语言的语法简单,交互性强。用Python来讲解数据结构等主题,比C语言等实现起来更为容易,更为清晰。 二来,随着Python日益广泛的应用,Python程序员需要实现与传统的面向对象编程语言相似的数据结构与算法。并且,Python是种语言,而数据结构和算法正是教你如何高效的使用各种语言,所以如果想高效使用Python,学算法和数据结构无异是如虎添翼。 事实上,使用Python来学习数据结构正在成为一种趋势,越来越多的高校开设了Python编程课和数据结构课。在此之前,北京大学便开设了Python数据结构的课程,并编写了相关教材。 毫不夸张地说,数据结构相关书籍使用Python编程语言,可以使计算机科学的第二门课程对学生和授课老师来说更具吸引力且易于学习。 简单来说,Python具有如下教学优势: (1)Python的语法非常简单且标准。Python的语句和伪代码算法的语句非常接近,而且Python的表达式使用了代数里的常规符号。这样,你可以花更少的时间了解编程语言的语法,进而把较多的时间花在解决有趣的问题上。 (2)Python的语义是安全的。任何表达式或语句只要违反了语言所定义的语义,都会得到错误的消息。 (3)Python的扩展性很好。Python可以让初学者很容易地编写出简单的程序。 (4)Python语言具有良好的可交互性。你可以在解释器的提示符窗口里输入表达式和语句,以验证代码,并且会立即收到反馈。你也可以编写较长的代码段,并把它们保存在脚本文件里,以作为模块或作为独立的应用程序加载。 (5)Python是通用的。在当今的语言环境下,这意味着该语言有可以用代应用程序中的相应资源--这些资源包括媒体计算和Web服务,等等。 (6)Python是免费的,并且在业内得到了越来越广泛的使用。 虽然Python的优点很多,但是,使用Python学习数据结构时也会有一些难点。 (1)关于Python 数据结构和算法的资料很少,中文资源更少。 (2)很多讲算法的资料过于晦涩,缺少工程应用场景下的具体案例讲解。 (3)网上关于Python数据结构的教程质量良莠不齐,越学越懵。 说真的,异步君之前想通过Python学习数据结构的时候,就踩了不少坑,就像在学习比较有名的《Fundamentals of Python: Data Structures》英文原版时,异步君就啃得很艰难。 但是好在后来,发现了美国华盛顿与李大学(Washington and Lee University)计算机科学系肯尼思·A. 兰伯特教授的全新力作《数据结构 Python语言描述(第2版)》中文版,才算是走上了轻松又正确的道路。 2
这本书为什么吸引了我? 这是一本用 Python 语言来讲解数据结构及实现方法的书籍。 全书首先概述 Python 编程的功能—这些功能是实际编程和解决问题时所必需的;其次介绍抽象数据类型的规范、实现和应用,多项集类型,以及接口和实现之间的重要差异; 随后介绍线性多项集、栈、队列和列表;最后介绍树、图等内容。本书附有大量的复习题和编程项目,旨在帮助读者巩固所学知识。 作者在书中用大量常见的例子和图表来详细阐述和介绍各个概念,然后再把这些新的概念应用到完整的程序之中,以展示如何用它们来解决各种问题。 而异步君在学习该书的时候,最喜欢便是它的细节安排,比如: (1)提供案例研究——这些案例研究都是完整的Python程序,既有简单的,也有复杂的。 为了强调软件开发生命周期的重要性和实用性,案例研究部分会涵盖用户需求、案例分析、案例设计、案例实现和测试建议、在每个阶段明确定义的所要完成的任务等内容。有些案例研究会在各章末尾的"编程项目"里得到扩展。 (2)进行章节总结——除了第1章,其他各章都会以对各章重要概念的总结作为结尾。 (3)突出关键术语——引入的新术语将用黑体着重显示。 (4)提供复习题——除第1章之外的其他各章都配有复习题。 这些复习题通过对本部分的基础知识进行提问来巩固阅读效果。从第2章开始,每一章的末尾都有复习题。 (5)提供编程项目——本书各章最后都会给出一些难度不同的编程项目。 值得一提的是,这本书是《数据结构 Python语言描述》首版的经典升级之作,汇聚了作者多年的实战经验,向读者透彻讲解在Python环境下,如何通过一系列存储机制高效地实现各类算法。 该版本具体升级的内容为: 各章开头会列出具体的学习目标,增加了更多用以阐释各种概念的例图,添加并修改了许多编程项目。 第2章新增了有关迭代器和高阶函数的内容。第9章新增了有关类Lisp列表、递归列表处理和函数式编程的内容。 3
再说说作者「肯尼思.A.兰伯特」 和译者「肖鉴明」 作者肯尼思.A. 兰伯特(Kenneth A. Lambert)是一名计算机科学教授,也是美国华盛顿与李大学(Washington and Lee University)计算机科学系的系主任。 他教授"程序设计概论"课程已有 30 多年,并且一直是计算机科学教育领域的活跃研究者。Lambert 自行撰写或与他人合著的书多达 28 本,包括一系列 Python 的入门图书、与 Douglas Nance 和 Thomas Naps一起编写的一系列 C 的入门图书、与 Martin Osborne 一起编写的一系列 Java 的入门图书,等等。 译者肖鉴明硕士毕业于美国华盛顿大学计算机系,编程爱好者。热衷于研究各种开源软件和新技术,有十余年软件开发工作经验。现为美国微软公司全栈工程师。 感谢了不起的计算机科学家和优秀的工程师为我们作译出一本好书! 4
Python数据结构高效学习路径 作者通过循序渐进的方式推进,并且只有在需要的时候才会引入新概念。跟着本书的脉络走,轻松高效地利用Python掌握数据结构。 具体来看,本书分为12章: 第1章回顾Python编程的相关功能,这是用Python学习计算机科学的第二门课程里的编程和解决问题必需的。如果你有丰富的Python编程经验,那么可以快速地浏览一遍这一章的内容;如果你是Python新手,那么可以通过这部分内容深入了解这门语言。 第2章介绍抽象数据类型(AbstractDataType,ADT)的概念,并且对各种多项集中的抽象数据类型进行概览。 第3章和第4章介绍实现大部分多项集的数据结构,并且介绍了一些用来进行复杂度分析的工具。 第5章和第6章把点转移到面向对象设计的原则上。这些原则在后续章节里用于构建多项集类的专家级框架。 在掌握了前6章中的概念和原则之后,你就可以开始学习第7~12章里其他重要的多项集抽象数据类型啦~ 第7~9章介绍栈、队列以及列表。我们会先从用户的角度进行介绍,以便你能了解所选实现里提供的接口以及一系列性能特征。我们会通过一个或多个应用程序说明每个多项集的用法,然后开发出这个多项集的若干种实现,并分析它们在性能上的权衡。 第10~12章介绍更高级的数据结构和算法,以便帮助你过渡到计算机科学里更高阶的课程。例如第10章讨论各种树结构,如二叉查找树、堆和表达式树。第11章通过哈希策略研究无序集合、包、集合、字典的实现。第12章介绍图和图处理算法。 5
今日购买福利 (1)新书优惠,原价¥119.9,现京东满1本享6折优惠,到手仅需¥71.22。 点下图,享受新书优惠! 《数据结构(Python语言描述)(第2版)》 作者: [美]肯尼思· A.兰伯特(Kenneth A. Lambert ) 译者:肖鉴明 (2)今日购买,可加入「异步读书会」,跟大家一起讨论干货、交流技术、学习成长! (3)配套文件下载 读者可以从wwwepubitcom下载本书的配套文件。 选用本书作为教材的老师,可通过contact@epubitcomcn申请教学PPT和习题解答。 不论你是高等院校计算机相关专业的学生,还是程序设计爱好者以及专业程序员,抑或是对Python感兴趣的其他读者,这本书都不应该错过! 这本书就是你的菜~