《Python算法教程》——1.3 一些准备工作

1.3 一些准备工作

本书的读者大致上可分为两个群体:首先是希望提升自身算法能力的Python程序员;再来就是正在进修算法课程的学生,他们可能都希望能有一本对普通教材有所补充的算法类书籍。即便对于后一种读者,我们也假设他们应该已经掌握了一定的编程基础,以及使用Python的经验。如果不是这样的话,也许我的另一本书《Beginning Python》会更有帮助一些吧?另外,Python官方网站上也有大量可用的学习资料,Python是一种非常易学的编程语言。尽管这些页面中会涉及一些数学方面的问题,但这并不等于我们非得是数学神童才能读懂它们。您的确会遇到一些简单的求和运算和一些相关的数学用语,如多项式、指数、对数等,但我们会将这一切都解释清楚,读者只需要跟着我们就可以了。

另外,在进入神秘的计算机科学领域之前,读者还需要准备好相关的设备环境。作为一个Python程序员,我们会假定您应该已经有了自己喜欢的文本/代码编辑器或集成开发环境——我们也不打算对您的选择指手画脚。至于涉及Python版本的部分,本书中所写的内容原则上是与版本无关的。也就是说,这里大部分代码都可以在Python 2到3的任何一个版本中运行。当遇到Python 3中个别特性的向下兼容问题时,我们都将会做出相应的解释,并且说明如何在Python 2中实现相同的算法。(即使您由于种种原因还在坚持使用Python 1.5,书中的大部分代码还是依然可以工作的,当然有些地方要做些调整。)

时间: 2024-10-28 02:45:24

《Python算法教程》——1.3 一些准备工作的相关文章

《Python算法教程》——2.4 请提防黑盒子

2.4 请提防黑盒子 虽然算法工作本身通常都相当抽象,但我们在实现自己的算法时还是要留些心眼.因为在编程时,我们必须依赖一些组件,而这些组件通常都不是我们自己写的,所以依赖于这些"黑盒子",而不知道其任何内容对我们来说多少是一种风险.在这本书中,您将会看到一系列被标识为"黑盒子"的侧边栏.在这些侧边栏中,我们将会简略讨论Python某些部分中的各种可用的算法.这里既有语言内置的,也有属于标准库的.我们会将它们都包括进来,因为这些算法是非常有意义的,它们能告诉我们Py

《Python算法教程》——导读

前 言 这本书结合了我的三大爱好:算法.Python编程及诠释事物.对我来说,这三项都是美学问题--找出让事情尽善尽美的方法.这就需要我们首先去发现相关事物的精华所在,然后精雕细琢,使其发光发亮,或至少比原先要闪亮一些.当然,由于某些材料表面的杂质太多,加工的结果可能会有些不尽人意.但幸运的是,本书中所涉及的内容大多都是现成品,因为我所写的都是一些久负盛名的算法及其论证,采用的也是最受欢迎的编程语言之一.至于在诠释事物方面,我一直在努力试着让事情变得尽可能显而易见一些.但即便如此,我也肯定还有许

《Python算法教程》——2.6 如果您感兴趣

2.6 如果您感兴趣 如果想了解有关图灵机以及计算领域方面更多基础知识的话,或许您会喜欢Charles Petzold写的那本<The Annotated Turing>.尽管该书在结构上依然只是Turing原始论文的一个注释版本,但其大部分内容实际上是Petzold本人对那些主要概念所做的诠释说明,里面含有大量的实例.总之,他对这个话题做了一个非常好的阐述.至于在计算领域的基础教科书方面,您可以看看Lewis与Papadimitriou合作的<Elements of the Theor

《Python算法教程》——2.2 渐近记法

2.2 渐近记法 还记得第1章中那个拿append与insert做对比的例子吗?似乎是出于某种原因,当我们选择将相关元素项添加到list尾端时,其在应对list大小变化时的性能弹性要比在其首端插入要好一些(关于list,读者稍后可以参考黑盒子专栏中的相关内容).而且,这些内置操作通常还都是用C编写的.如果我们花点时间用纯Python重新实现一下list.append方法,(粗略)估计新版本会比原版本慢50倍左右.并且我们还可以做进一步估计,相较于这个较慢的.纯Python实现的append方法在

《Python算法教程》——1.4 本书主要内容

1.4 本书主要内容 本书大体结构如下. 第1章 引言:这章您目前已经读了大半了,主要是对本书内容做一个预览. 第2章 基础知识:这章主要涉及一些基本的概念与术语,以及一些基本的数学运算.除此之外,我们还会介绍一些比以往任何时候都要模糊的计算公式,并试图用它们来获取正确的结果.这就是所谓的渐近记法. 第3章 计数初步:这章会涉及更多数学运算--但这些运算真的很有趣,我保证!主要是一些用于算法运行时间分析的基本组合运算,以及对递归与递推关系的概念性介绍. 第4章 归纳.递归及归简:标题中的这三个词

《Python算法教程》——1.2 为什么要读这本书

1.2 为什么要读这本书 当我们在工作中使用算法时,通常都是希望能更有效地解决问题.使程序运行得更快,并且让解决方案变得更为简短.但实际情况如何呢?我们获得所需要的效率.速度和简洁性了吗?为什么人们在使用Python这种语言时依然要在乎这些事呢?选择这种语言对于追求高速度的人来说是一个好的开端吗?为什么不选择C或Java这样的语言呢? 首先,可能是因为Python语言本身很讨人喜欢,以至于人们不想换别的语言,或者他们目前也没有更好的选择.但最为重要的可能还是第二点,即在这里,算法设计者们首先要担

《Python算法教程》——第1章 引言 1.1 这是一本怎么样的书

第1章 引言 1.提出问题. 2.思考真正困难所在. 3.提出解决方案. --摘自<The Feynman Algorithm>,Murray Gell-Mann著 让我们先来考虑一下下面这个问题:我们想要访遍瑞典境内所有的城市.小镇和村庄,然后再返回出发地点.显然,这段旅程肯定要耗费掉不少时间(毕竟我们要访问24 978个地方),因而我们希望能最小化该旅行路线.也就是说,我们既要能按计划逐个参观这些地方,又要尽可能地走出一条最短路线来.作为一个程序员,我们当然不屑于用手工方式来设计该路线,显

《Python算法教程》——第2章 基础知识 2.1 计算领域中一些核心理念

第2章 基础知识 Tracey:我不知道您在哪里. Zoe:隐身术就是这样--您应该听说过的. Tracey:我可不认为这属于基础知识. --选自<Firefly>第14集台词 在我们将注意力转向本书主体内容,也就是那些数学技术.算法设计原则及经典算法之前,还必须先了解一些最基本的技术与原则.因为当您阅读到后续章节时,至少应该非常清楚类似"无反向环路的加权有向图"以及"Θ(n lg n)运行时间"这些词句所表达的具体含义.同时,我们也理应要对Python

《Python算法教程》——2.5 本章小结

2.5 本章小结 在本章,我们从一些重要的基本概念入手,定义了一系列略显松散的算法理念.抽象计算机及一些相关的问题.紧接着,我们讨论了两个主要话题,即渐近表示法与图结构.渐近记法主要用于描述一个函数的增长态势.它能让我们忽略掉那些不相干的加法或乘法常数,并聚集于问题的主体部分.这样一来,我们就可以根据一些显著特征,在某个抽象层次上对相关算法进行运行时间评估,而不用去操心既定实现中的那些具体细节.我们用三个希腊字母O .Ω与Θ来分别表示算法的上界.下界以及整体渐近边界,它们各自可以用来描述一个算法