数据结构与算法-绪论-(二)python

1.python程序的计算复杂性


2.问题和复杂性






3.计算和数据表示

用计算机解决问题,可以认为是实现某种信息表示形式的转换.

(1)数据data:计算机程序能够处理的符号形式的综合,数据是编码的信息。

(2)数据元素data element:数据的基本单位

(3)数据结构data structures:一组数据元素按照一定方式构成的复合数据形式,以及作用于这些元素或者结构上的一些函数或操作。常用数据结构有:

表/堆栈/队列/链接表/字符串/树/二叉树/字典/集合/图

4.数据结构

(1)数据结构的特征:逻辑结构(元素之间的抽象关系)、物理结构(逻辑结构在计算机存储器中的映射,又称存储结构)、行为特征(作用于数据结构上的各种运算,如检索、插入、删除元素)

(2)python数据结构:

一.典型数据元素:整数、浮点数、布尔值

二、python中标准数据结构:

正文序列类型str、序列类型list和tuple、集合类型set和frozenset、映射类型dict

三、简单介绍python数据结构

(1)字符串,类型名str,不变(immutable)正文序列类型

对象:字符的有穷序列

访问操作:求长度、取成员,取子串(切片),查找子串,判断成员字符类型,等

基于已有字符串构造新串:改变大小写,拼接,格式化(变换格式),子串替换,切分,等等,都是构造新串。

(2)元组,类型名tuple,不变序列类型

对象:任意元素的有穷序列,一个元组的生源可为不同类型的对象

序列的共有操作:成员判断(in,not in),取元素/切片,长度,元素检索/计数,最大/最小,拼接/重复拼接(产生新序列)

不变序列的唯一特殊操作是hash,它从任意个不变序列生成一个整数,具体映射方式由系统的实现确定

不变序列可以作为字典的关键码,可作为set/frozenset的元素

(3)表,类型名list,可变mutable的序列类型

对象:任意元素的序列

支持所有共有的序列操作

所有可变序列操作(改变被操作的表):元素替换(赋值),切片替换/删除,元素插入/删除,等等

(4)集合,类型名set和frozenset,分别为可变/不变汇集类型。其元素可以是数值或逻辑对象/字符串/不变序列等,元素值唯一

对象:任意满足条件的元素的汇集

frozenset支持所有不变集合操作:元素个数,元素判断,集合之间的关系(包含/相交),集合运算(并/交/差/对称差)等

set还支持可变集合操作:修改集合的运算(并/交/差/对称差),加入/删除元素等

集合的元素只能是不变对象,可求出hash值

(5)字典,类型名dict,可以看作是关键码和值的二元组的集合,其中关键码必须是不变对象

对象:一组关键码到一组值的映射

最基本操作:关键码-值二元组的加入和关键码检索

其他操作:元素个数,关键码存在判断,元素删除(基于关键码),另一些修改字典的操作,等

5.抽象数据类型

一、思想:采用某种数据形式表示所需的数据“类型”,并定义一组操作,实现对有关数据对象的所需操作

二、python提供了支持定义数据抽象的机制(python基本系统就是基于类和对象构造起来的):

(1)定义数据类型的标准python机制是class定义(类定义)

(2)定义好的类可以像内置类型一样使用,包括生成类的实例(对象,object)

(3)在类定义里,可以为本类的实例定义一组相关操作

6.类与面向对象编程

一、OOP objected oriented programming

(1)面向对象编程是指:定义类,生成类的对象,基于这种对象组织和描述计算,这一套做法称作OOP

(2)类:



猜你喜欢

转载自blog.csdn.net/shuwenting/article/details/79722461