内容正文:
数据与结构
课堂目标
熟悉队列结构的概念和特点,能够使用Python语言对队列进行操作。
了解树、图结构的基本概念及特点。
能够比较不同数据结构的特点,会选用合适的数据结构组织数据解决简单问题。
2
任务一:探究网购订单处理
一、引入
活动1:了解订单数据
网站名称 订单中的数据 Python中对应的数据类型
某电商网站 商品名称 字符串
单价 浮点型
数量 整型
高中生学籍网 姓名 字符串
出生日期 日期型
是否团员 布尔型(逻辑型)
3
二、数据类型
>>> type(8) #type()函数返回数据的类型
<class 'int'> #返回'int'类型
>>> type(3.14)
<class 'float'> #返回'float'类型
>>> type('Thank you!')
<class 'str'> #返回'str'类型
>>> type(1<2)
<class 'bool'> #返回'bool'类型
>>> type(3-2j)
<class 'complex'> #返回'complex'类型
在Python语言中,简单数据类型有整数(int)、浮点数(float)、字符串(str)、布尔(bool)、复数(complex)等数据类型。
4
在Python语言中,复合数据类型有元祖(tuple)、集合(set)、列表(list)、字典(dict)等。
>>> BookInfo0=('ID0010230',15.68,36)
>>> type(BookInfo0)
<class 'tuple'> #返回元组类型
另一用户预订的商品编号为ID2315937、单价为20元,数量为2,可记作:
>>> BookInfo1=('ID2315937',20,2)
>>> BookInfo1[1]
20 #返回元组BookInfo1中索引为1的项的值
①元组
某用户预订的商品编号为ID0010230、单价为15.68元,数量为36,可将这3个不同类型的简单数据组织成“元组”复合数据类型:
5
>>> BookSet={BookInfo0,BookInfo1}
>>> type(BookSet)
<class 'set'> #返回集合类型
>>> BookSet
{('ID2315937', 20, 2), ('ID0010230', 15.68, 36)} #返回集合的值
>>> BookInfo0 in BookSet #测试元素BookInfo0是否属于集合BookSet
True #返回逻辑真(属于)
②集合
订单汇总,可以定义为一个集合(集合里的项称为元素,彼此之间没有顺序):
6
>>> BookList=[BookInfo0, BookInfo1]
>>> type(BookList)
<class 'list'> #返回列表类型
>>> BookList[0]
('ID0010230', 15.68, 36)
>>> BookList[1]
('ID2315937', 20, 2)
>>> BookList[0][1]*BookList[0][2]+BookList[1][1]*BookList[1][2]
604.48 #返回计算结果
③列表
订单汇总,也可以按订单产生的先后顺序组成一个列表(列表里的项是有顺序编号的):
7
数据结构:存在特定关系的数据元素的组合体
数据结构按逻辑结构分类:
集合结构、线性结构、树结构、图结构
二、数据结构
8
线性数据结构:
除首元素没有前趋元素、尾元素没有后继元素外,其他元素都只有一一个前趋元素和后继元素。
以上面的处理订单程序为例,在列表listque中:首元素索引号为0,向后走,索引号递增,这是正向编号。还有一种索引编号方式,尾元素编号为-1,向首元素方向依次递减,这是反向编号。
9
队列是先进先出(FIFO)表,它的数据元素只能在一端依次添加(进队),在另一端依次删除(出队)。
a0 ,a1 ,a2 ,… ,an
出队
入队
队首
队尾
队列
例子: 超市里排队付款的队伍。
比如在上述代码中,listque是列表类型的数据,存放了一组字符串类型的数据,表示订单编号。我们可以通过对应的方法对列表进行操作:
pop(0)方法可以删除列表的首元素(相