Python基础及应用课件第4章.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python基础及应用课件第4章.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 基础 应用 课件
- 资源描述:
-
1、Python基础及应用课件第4章目录什么是数据结构Tuple(元组)List(列表)Dict(字典)字符串什么是数据结构数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,是计算机存储组织数据的形式。我们可以将生活中的事物联系抽象为特定的四种数据结构集合结构,线性结构,树形结构,图状结构。什么是数据结构1.集合结构在数学中集合的朴素定义是指具有某种特定性质的事物的总体,具有无序性和确定性。计算机中的集合结构顾名思义正是对生活中集合关系的抽象,比如对于一筐鸡蛋,筐就是一个集合,其中的元素就是每个鸡蛋。什么是数据结构2.线性结构线性结构和集合结构非常类似,但是线性结构是有序的并且元素之间有
2、联系,比如排队中的人就可以看做一个线性结构,每个人是一个元素同时每个人记录自己前面和后面的人是谁,这样存储到计算机中后我们可以从任意一个人访问到另一个人。树形结构和图状结构这里暂不介绍,我们的学习会以前两种为主,因为它们直接对应了 Python 的基本数据类型。TupleTuple又叫元组,是一个线性结构,它的表达形式是这样的:即用一个圆括号括起来的一串对象就可以创建一个Tuple,之所以说它是一个线性结构是因为在元组中元素是有序的,比如我们可以这样去访问它的内容这段代码会输出:切片1.背景切片操作符的和C/C+的下标运算符非常像,但是在 C/C+中,只能用来取出指定下标的元素,所以它在 C/
3、C+中叫做下标运算符。在Python中,这个功能被极大地扩展了它不但能取一个元素,还能取一串元素,甚至还能隔着取、倒着取,反向取等等。由于取一串元素的操作更像是在切片,所以我们称它为切片操作符。灵活使用切片操作符,往往可以大大简化代码,这也是Python提供的便利之一。切片:取一个元素如果我们有一个 Tuple,并且我们想取出其中一个元素,我们可以使用具有一个参数的下标运算符:绝大部分编程语言下标都是从0开始的,也就是说在Python中对于一个有n个元素的Tuple,自然数下标的范围是0n-1。所以这里会输出tuple1中下标为2的第3个元素:5这是切片操作符最简单的形式,它只接收一个参数就是
4、元素的下标,切片:取一个元素特别地,Python支持负数下标表示从结尾倒着取元素,比如我们如果想取出最后一个元素:但是要注意的是负数下标是从-1开始的,所以对于一个含有n个元素的 Tuple,它的负数下标范围为-1-n,因此这里得到的是下标为4的最后1个元素,输出为:9切片:取一个元素如果我们取了一个超出范围的元素:那么 Python 解释器会抛出一个 IndexError 异常:Traceback(most recent call last):这个异常的详细信息是下标超出了范围。如果遇到这种情况,我们就需要检查一下代码是不是访问了不存在的下标。切片:取连续的元素这段代码会输出:(1,3,5)
5、我们会发现结果仍然是一个 Tuple,由第1个到第4个元素之间的元素构成,其中包含第1个元素,但是不包含第4个元素。这种切片操作接收两个参数,开始下标和结束下标,中间用分号隔开,也就是上面例子中的0和3,但是要注意的是元素下标区间是左闭右开的。如果对之前讲循环时候的 range 还有印象的话,可以发现它们区间都是左闭右开的,这是Python中的一个规律。切片:取连续的元素特殊地,如果我们从第0个开始取,或者我们要一直取到最后一个,我们可以省略相应的参数,比如:第一句表示从第1个元素取到第3个元素,第二句表示从第4个元素取到最后一个,所以输出为:同样地,这里也可以使用负下标。切片:以固定间隔取连
6、续的元素上述取连续元素的操作其实还可以进一步丰富,例如:这段代码会输出:(3,7)这里表示的含义就是从第2个元素取到第5个元素,每2个取第一个。于是我们取出了第2个和第4个元素。这也是切片操作符的完整形式,即 开始:结束:间隔,例如上面的 1:4:2。特殊地,这个间隔可以是负数,表示反向间隔,例如这句代码会输出:(9,7,5,3,1)。翻转了整个Tuple。修改这里说“修改”并不是原位的修改,因为Tuple的元素一旦指定就不可再修改,而是通过创建一个新的 Tuple 来实现修改。这段代码会输出:修改我们通过创建tuple3和tuple4,“修改”了tuple1和tuple2。同时要注意的是,之
7、前在讲字符串的时候提到的加法和乘法对Tuple的操作也是类似的,效果分别是两个Tuple元素合并为一个新的Tuple和重复自身元素返回一个新的Tuple。遍历遍历有两种方法遍历这段代码会输出:1 3 5 7 9 1 3 5 7 9 我们在 print 函数中加了一个使结束符为空的参数,这个用法会在下一章函数中讲到,这里只要知道这样会使print不再自动换行就行了。我们可以通过一个 for 循环或者 while 循环直接顺序访问元组的内容。显然for循环不仅可读性高而且更加简单,在大多数情况下应该优先采用for循环。另外值得一提的是,之所以Tuple可以这样用for遍历是因为Tuple包括后面马
8、上要提到的List和Dict对象本身是一个可迭代的对象,这个概念之后会细讲,这里只要学会for循环的用法就行了。查找在 Tuple 中查找元素可以用 in,比如:这段代码会输出:We found 3!in 是一个使用广泛的判断包含的运算符,类似地还有 not in。in的作用就是判断特定元素是否在某个对象中,如果包含就返回 True,否则返回 False。内置函数此外有一些内置函数可以作用于Tuple上,比如:从上到下分别是求tuple1的长度、tuple1中最大的元素、tuple2中最小的元素。这些函数对接下来即将讲到的List和Dict也有类似的作用。ListList又叫列表,也是一个线性
9、结构,它的表达形式是:List的性质和Tuple是非常类似的,上述Tuple的操作都可以用在List上,但是List有一个最重要的特点就是元素可以修改,所以List的功能要比Tuple更加丰富。由于List的查找和遍历语法和Tuple是完全一致的,所以这里就不再赘述了,我们把主要精力放到List的特性上。添加之前已经提到了,List是可以修改的,因此我们可以在尾部添加一个元素,比如:添加输出:1,2,3,4,5,6append方法的作用是在List后面追加一个元素,类似地,我们还有 extend 和 insert可以用于添加元素,比如:这段代码会输出:添加extend接收一个参数,内容为要合并
10、进这个list的一个可迭代对象,所以这里可以传入一个List或者Tuple。insert接收两个参数,分别是下标和被插入的对象,可以在指定下标位置插入指定对象。删除由于List元素是可以修改的,因此删除也是允许的,List删除元素有三种方法:del 操作符pop 方法remove 方法删除:del 操作符del 是一个Python内建的一元操作符,只有一个参数是被删除的对象,比如:这段代码会输出:1,3,4,5del一般用来删除指定位置的元素。删除:pop 方法pop方法没有参数,默认删除最后一个元素,比如:这段代码会输出:删除:remove 方法remove方法接收一个参数,为被删除的对象,
11、比如:这段代码会输出:同时我们也可以看出remove是从前往后查找,删除遇到第一个相等的元素。修改List可以在原位进行修改,直接用下标访问就可以,比如:这段代码会输出:这样第三个元素就被修改了。修改还记得我们刚刚学习的切片操作符吗?对于List来说可以一次修改一段值,比如:这段代码会输出:修改也可以等间隔赋值:这段代码会输出:修改很多时候我们希望在遍历过程中修改值,那么就有了问题,如果我们删除了一个值,那么之后会不会遍历到已删除的值?而如果我们在尾部添加了一个值,那么之后新添加的值会不会被遍历到?在Python中遍历List时候修改值是完全安全的,不会遍历到删除的值并且新添加的值会正常遍历,
12、下面是一个例子:修改修改在for循环中的建立的循环变量item只是原对象list1中元素的一个拷贝,所以直接修改item不会对list1造成任何影响,我们依旧需要用下标或者List的方法来修改list1的值。之前我们都是通过while来完成跟下标有关的循环的,这里就介绍一下如何用for来进行下标相关的循环,那就是利用enumerate返回一个迭代器,这个迭代器可以同时生成下标和对应的值用于遍历。当然由于我还没有讲到函数和面向对象的相关知识,这里只要有个印象即可,能模仿使用更好。排序和翻转很多时候,我们希望数据是有序的,而List提供了sort方法用于排序和reverse方法用于翻转,比如:排序
13、和翻转代码会输出:第一个 reverse方法的作用就是将List前后翻转,第二个sort方法是将元素从小到大排列,第三个 sort 加了一个 reversed=True 的参数,所以它会从大到小排列元素。推导式列表推导式是一种可以快速生成 List 的方法。比如生成一个含有 0-100 中所有偶数的列表:怎么理解这个语法呢?这里的语法很像经典集合论中对集合的定义,其中最开始的 i 是代表元素,而后面的for i in range(101)说明了这个元素的取值范围,最后的一个 if 是限制条件。推导式同时代表元素还可以做一些简单的运算,比如:这里输出的结果是:0,1,4,9,16,25,36,4
14、9,64,81这里我们依靠列表推导式就快速生成了 100 以内的完全平方数。另外值得一提的是,列表推导式不仅简洁、可读性高,更关键的是相比之前的循环生成列表推导式的效率要高得多,因此在写 Python 代码中应该善于使用列表推导式。DictDict中文名为字典,与上面的Tuple和List不同,是一种集合结构,因为它满足集合的三个性质即无序性,确定性和互异性。创建一个字典的语法是:这段代码我们定义了一个 zergling,它拥有 5 点攻击力,具有 4.13 的移动速度,消耗 50 块钱。Dict 使用花括号,里面的每一个对象都需要有一个键,我们称之为 Key,也就是冒号前面的字符串,当然它也
15、可以是 int、float 等基础类型。冒号后面的是值,我们称之为 Value,同样可以是任何基础类型。所以Dict除了被叫做字典以外还经常被称为键值对、映射等。DictDict的互异性体现在它的键是唯一的,如果我们重复定义一个Key,后面的定义会覆盖前面的,比如:#请不要这么做这段代码会输出:6Dict相比Tuple和List,Dict 有以下特点:(1)查找比较快(2)占用更多空间(3)Key不可重复,且不可变(4)数据不保证有序存放这里最重要的特点就是查找速度快,对于一个Dict来说无论元素有10个还是10万个查找某个特定元素花费的时间都是相近的,而List或者Tuple查找特定元素花费
16、的时间会随着元素数目的增长线性增长。访问Dict 的访问和 List 与 Tuple 类似,但是必须要用Key作为索引:这里会输出:50如果执行注释里的错误用法,会抛出 KeyError 异常,因为Dict是无序的,所以无法用下标去访问,报错为:访问:使用 in为了避免访问不存在的 Key,这里有三种办法第一种办法是使用 in 操作符,比如:in 操作符会在Dict所有的Key中进行查找,如果找到就会返回 True,反之返回 False,因此可以确保访问的时候Key一定是存在的。访问:使用 get 方法第二种办法是使用 get 方法,比如:get 方法可以节省一个 if 判断,它如果访问了一个
17、存在的 Key,则会返回对应的 Value,反之返回 None。访问:使用 defaultdict这种办法需要用到一个 import,它的作用是导入一个外部的包,这里仅作了解。这段代码会输出:None可以看到 defaultdict 在访问不存在的 Key 的时候会直接返回 None。修改修改 Dict 中 Value 非常简单,和 List 类似只要直接赋值即可:添加添加的方式和 Python 中声明变量的方法类似,比如:和List不同的是,由于Dict没有顺序,所以 Dict 不使用 append 等方法进行添加,而是只要对要添加的Key直接赋值就会自动创建新Key,当然如果Key已经存在
展开阅读全文