Python数据结构与算法分析学习记录(1)——基于Problem Solving with Algorithms and Data Structures using Python的学习

1.1. 目标

  • 了解计算机科学、程序设计和问题解决的基本概念;
  • 理解什么是“抽象”以及抽象在问题解决过程中的作用;
  • 理解“抽象数据类型”的概念以及在实际操作中学会运用;
  • 学习Python程序设计语言。

1.2. 开始学习

本章接下来将主要强调两个重要的方面。第一,回顾计算机科学以及算法与数据结构的基本框架,并特别强调我们学习这些内容的原因以及理解这些内容如何帮助我们更好地解决问题。第二,了解python语言。

1.3. 计算机科学是什么

面对一个特定问题,计算机科学家的目标是得出一个算法(algorithm),写出一组解决该问题可能出现的任何情况的步步为营的指令。算法通过有限过程解决问题。算法是解决方案。

描述问题及其解决方案时,“可计算”(computable)这个词是很常见的。当存在解决某个问题的算法时,我们说该问题是可计算的。另一种对计算机科学的定义是:计算机科学研究的是问题是否可计算,算法是否存在。

计算机科学,就如它关注问题求解过程一样,也研究抽象(abstraction)。抽象使我们能以一种区分所谓的逻辑对象和物质对象的方式来看待问题及其解决方案。

—以Python 的math 模型为例。只要我们引用了这个模型,我们就可以进行下面的计算:

>>>import math
>>>math.sqrt(16)
4.0

这就是一个过程抽象(procedural abstraction)的例子,我们不一定要知道平方根是怎么运算的,我们只需要知道这个函数叫什么、如何使用它。如果引用的正确,我们就可以相信这个函数会提供给我们正确的答案。

1.4. 什么是程序设计

程序设计(Programming)是将算法编码为计算机可执行的表示法或编程语言的过程。虽然如今存在多种编程语言以及多种计算机,但是最重要的第一步还是给出解决问题的方案。没有算法就没有程序。

在计算机中,所有数据项都用一段二进制数字表示。为了使这些数字能代表数据,我们需要有数据类型(data types)。数据类型把这些二进制数据翻译成我们可以理解的、在解决问题中讲得通的内容。

1.5. 为何要学习数据结构和抽象数据类型

早期,我们把对程序的抽象视为一种通过隐藏特定函数的细节让用户或用户可以在更高层次看问题的方法。数据抽象(data abstraction)的思想与之相似。抽象数据类型(abstract datatype)(常简写为ADT),不涉及数据、操作如何被执行,只是关于如何查看数据和许可操作的逻辑性描述。这意味着我们关注的只是数据代表的含义而不是最终运行的过程。通过提出这种抽象概念,我们实现了对数据的封装(encapsulation)。这种理念就是通过对执行的数据的封装,使之从用户视野中消失。这就叫做信息隐藏(information hiding)

抽象数据类型的执行,常被称为数据结构(data structure),它需要我们用一些程序设计和原始数据类型来提供一个关于数据的实际展示。

1.6. 为何要学习算法

作为计算机科学家,除了解决问题的能力,我们还需要掌握解决方案评估的技能。最后,一个问题通常有很多解决方法。找到一个方案然后思考它是否是一个好方案将是我们周而复始的任务。

1.7. PYTHON 入门

Python列表中提供的方法:

Python数据结构与算法分析学习记录(1)——基于Problem Solving with Algorithms and Data Structures using Python的学习_第1张图片

Python 中的字符串方法 :

Python数据结构与算法分析学习记录(1)——基于Problem Solving with Algorithms and Data Structures using Python的学习_第2张图片

Python 中集合的运算符:

Python数据结构与算法分析学习记录(1)——基于Problem Solving with Algorithms and Data Structures using Python的学习_第3张图片

Python 中集合操作的函数:

Python数据结构与算法分析学习记录(1)——基于Problem Solving with Algorithms and Data Structures using Python的学习_第4张图片

Python 中字典运算符:

Python数据结构与算法分析学习记录(1)——基于Problem Solving with Algorithms and Data Structures using Python的学习_第5张图片

Python 中字典的函数 :

Python数据结构与算法分析学习记录(1)——基于Problem Solving with Algorithms and Data Structures using Python的学习_第6张图片

格式化字符串转换字符 :

Python数据结构与算法分析学习记录(1)——基于Problem Solving with Algorithms and Data Structures using Python的学习_第7张图片

格式修饰符:

Python数据结构与算法分析学习记录(1)——基于Problem Solving with Algorithms and Data Structures using Python的学习_第8张图片

1.8小结

  • 计算机科学是研究问题解决的学科;
  • 计算机科学以抽象为工具来表现过程与数据;
  • 抽象数据类型允许编程者通过隐藏数据的细节来管理问题域的复杂度;
  • Python 是一门强大的,而同时又易于使用的面向对象的程序设计语言;
  • 列表,元组和字符串都是 Python 内置的有序集合;
  • 字典和集合是数据的无序集合;
  • 类允许编程者执行抽象数据类型;
  • 编程者既可以重载既有方法,也可以编写新的方法;
  • 类可以被组织为阶层架构;
  • 一个类的构造器在继续自己的数据和行为前,总要调用它父类的构造器。

你可能感兴趣的:(数据结构与算法分析)