一. Python数据结构与算法(1概念引入_3)

提示:1-07-Python列表与字典操作的时间复杂度_哔哩哔哩_bilibili

目录

前言

1. 引入_3

1.7 Python内置类型性能分析

1.8 数据结构的引入

1.8.1 数据结构与算法的区别

1.8.2 抽象数据类型


前言

本小节继续讲解Python内置类型性能分析和数据结构引入,以方便更好地理解数据结构与算法。

1. 引入_3

1.7 Python内置类型性能分析

知识点1:前两个index都是索引,复杂度仅为O(1)

知识点2:append就是向后添加值,复杂度也为O(1);

知识点3:pop()也就是从尾部返回值,复杂度为O(1);而pop(i)是指定位置pop,复杂度是O(n);为什么是O(n)呢,因为是表示的事最坏复杂度,考虑首个数据,那么复杂度就是n了。

1.8 数据结构的引入

注意在上一节当中,用到的是li += [i]但是发现和extend的秒数差不多,其实是有问题的。因为这里的li += [i] 其实是近似等于extend的。而真正的li = li + [i] 所需要消耗的时间是挺大的,如上图所示。

那么接下来我们思考一下,如何用Python中的类型来保存一个班的学生信息? 并且想要快速的通过学生姓名获取其信息呢?

实际上当我们在思考这个问题的时候,我们已经用到了数据结构列表和字典都可以存储一个班的学生信息,但是想要在列表中获取一名同学的信息时,就要遍历这个列表,其时间复杂度为O(n),而使用字典存储时,可将学生姓名作为字典的键学生信息作为值,进而查询时不需要遍历便可快速获取到学生信息,其时间复杂度为O(1)。

我们为了解决问题,需要将数据保存下来,然后根据数据的存储方式来设计算法实现进行处理,那么数据的存储方式不同就会导致需要不同的算法进行处理。我们希望算法解决问题的效率越快越好,于是我们就需要考虑数据究竟如何保存的问题,这就是数据结构。

在上面的问题中我们可以选择Python中的列表或字典存储学生信息。列表和字典就是Python内建帮我们封装好的两种数据结构。

举个例子:储存学生信息,我们一般需要知道学生的姓名,年龄,家乡。我们可以选择列表或者字典,如下图:

上图是利用列表来统计三名学生的信息,但是如果我们需要查询某学生的信息,必须要遍历该列表,所以相对来说效率还是比较低的。那么下面则开始使用字典:

使用字典,我们可以直接找到对应的信息。

因此,通常来讲数据结构解决的就是一组数据如何保存,保存形式是什么样的。这个是数据结构就是要解决的问题。

数据是一个抽象的概念,将其进行分类后得到程序设计语言中的基本类型。如:int,float,char等。数据元素之间不是独立的,存在特定的关系,这些关系便是结构。数据结构指数据对象中数据元素之间的关系。Python给我们提供了很多现成的数据结构类型,这些系统自己定义好的,不需要我们自己去定义的数据结构叫做Python的内置数据结构,比如列表、元组、字典。而有些数据组织方式,Python系统里面没有直接定义,需要我们自己去定义实现这些数据的组织方式,这些数据组织方式称之为Python的扩展数据结构,比如栈,队列等。

1.8.1 数据结构与算法的区别

数据结构只是静态的描述了数据元素之间的关系
高效的程序需要在数据结构的基础上设计和选择算法
程序=数据结构+算法
总结:算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题载体

1.8.2 抽象数据类型

抽象数据类型(ADT)的含义是指一个数学模型以及定义在此数学模型上的一组操作。即把数据类型和数据类型上的运算捆在一起,进行封装。引入抽象数据类型的目的是把数据类型的表示和数据类型上运算的实现与这些数据类型和运算在程序中的引用隔开,使它们相互独立。

抽象数据类型就是你先规定这个数据如何保存?然后数据保存好之后,看下这个数据结构包含哪些操作?你也给它们定义出来,如下图:

但是这些操作到底如何实现,暂时不用管。只是先把接口给定义出来

  • 28
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python数据结构课程设计实例游戏是一种基于Python编程语言的课程设计,旨在帮助学生巩固和应用所学的数据结构知识,同时锻炼他们的编程实践能力。下面我将使用300字中文回答该问题。 这个游戏的设计目的是让学生通过实践运用Python数据结构来解决问题。比如,可以设计一个迷宫游戏,学生需要使用链表来表示迷宫的路径,使用栈来记录玩家的移动历史,使用队列来实现广度优先搜索算法来寻找最短路径。 在游戏的实现过程中,学生需要构建适合游戏场景的数据结构,并实现相应的操作方法。比如,可以定义一个迷宫类,包含迷宫地图、玩家位置等属性,并在类的方法中实现各种操作,比如玩家移动、路径搜索等。学生需要根据问题的要求,选择合适的数据结构和算法,并合理运用它们。 在游戏设计的过程中,可以设定一些挑战和关卡,通过实现和完成这些关卡,学生可以逐渐熟悉和掌握不同的数据结构和算法。比如,可以要求学生实现一个角色可以穿越墙壁的迷宫,这就要求学生灵活运用链表、栈等数据结构来解决问题。 此外,游戏设计过程中还可以引入一些额外的功能和要求。比如,可以增加计时器功能,要求玩家在规定时间内完成迷宫,这就需要学生使用优先队列数据结构来实现。 总之,通过设计一个具有挑战性和趣味性的游戏,结合所学的Python数据结构知识,可以激发学生的学习兴趣,提高他们的实践能力和问题解决能力。这样的课程设计实例游戏能够帮助学生巩固所学的知识,培养他们对数据结构的理解和运用能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值