python实用教程-第三章-列表和元组课件

PPT
  • 阅读 81 次
  • 下载 0 次
  • 页数 69 页
  • 大小 179.146 KB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
python实用教程-第三章-列表和元组课件
可在后台配置第一页与第二页中间广告代码
python实用教程-第三章-列表和元组课件
可在后台配置第二页与第三页中间广告代码
python实用教程-第三章-列表和元组课件
可在后台配置第三页与第四页中间广告代码
python实用教程-第三章-列表和元组课件
python实用教程-第三章-列表和元组课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 69
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】python实用教程-第三章-列表和元组课件.pptx,共(69)页,179.146 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2427.html

以下为本文档部分文字说明:

第三章列表和元组•本章将引入一个新的概念:数据结构。数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些元素可以是数字或者字符。在Python中,最基本的数据结构是序列(sequence)。•Python包含6种内建的序列,即列表、元组、

字符串、Unicode字符串、buffer对象和xrange对象。本章重点讨论最常用的两种:列表和元组。•本章引言:•随着“集合号”的不断前行,我们来到了今天的旅游目的地——Python库。“集合号”在指定地方停止,Python快乐学习班的所有同学需要转乘景区的“序列号”旅游大巴通往目

标景点。并由专门的导游带领他们进行参观。•导游为便于带领Python快乐学习班的同学游玩,给每个人一个号码牌,编号从0开始,一直到30号。•为了便于导游及早大概熟悉读者的面孔,导游安排读者根据编号对号入座,并从0号开始排队上“序列号”大

巴,同学们根据序号排队上车并在对应座位号上坐下。•导游为便于读者相互照应,将31名同学根据序号分成六组,前五组每组5名同学,最后一组6名同学。即第一组0至4号,第二组5至9号,第三组10至14号,第四组15至19号,第五组20至24号,第六

组25至30号。3.1通用序列操作•在讲解列表和元组之前,本节先介绍Python中序列的通用操作,这些操作在列表和元组中都会用到。•Python3.x中所有序列都可以进行某些特定的操作,这些操作包括:索引(in

dexing)、分片(sliceing)、序列相加(adding)、乘法(multiplying)、成员资格、长度、最小值和最大值。3.1.1索引的定义与实现•序列是Python中最基本的数据结构。序列

中的每个元素都分配一个数字,代表它在序列中的位置,或索引,第一个索引是0,第二个索引是1,依此类推。•序列中所有的元素都是有编号的——从0开始递增。可以通过编号分别对序列的元素进行访问。•比如对于“序列号”大巴上的第二组的成员,他们的序号分别是5、6、7、8、9,将这5

个序号放在一个字符串中,该字符串赋给变量group_2,意为第二组。•现对group_2做如下操作:•>>>group_2='56789'#定义变量group_2,并赋值56789•>>>group_2[0]#根据编号取元素,使用格式为:在方括

号中输入所取元素的编号值•'5'•>>>group_2[1]•'6'•>>>group_2[2]•'7'•序列中的元素是从0开始从左向右依自然顺序编号的,对元素的访问可以通过编号访问。获取元素的方式为变量后面跟上中括号,中括号中输入所取元素的编号值,这个格

式需要记住。•如“序列号”大巴上的所有同学,目前已经从0编号到30,每个序号对应一位同学。程序中的序列也是如此。•这里的所指的编号就是索引,可以通过索引获取元素。所有序列都可以通过这种方式进行索引。•字符

串本质是由字符组成的序列。索引值为0的指向字符串中的第一个元素。比如在上面的示例中,索引值为0指向字符串56789中的第一个字符5,索引值为1指向字符6,索引值为2指向字符7。•上面的示例是从左往右顺序通过下标编号获取序列中元素的,也可以通过从右往左的逆序方式获取序列

中的元素,其操作方式如下:•>>>group_2[-1]•'9'•>>>group_2[-2]•'8'•>>>group_2[-3]•'7'•>>>group_2[-4]•'6'•Python的序列也可以从右边开始索引,最右边的一个元素的索引为-1,向左开

始递减。•在Python中,从左向右索引称为正数索引,从右向左称为负数索引。使用负数索引时,Python会从最后1个元素开始计数。最后一个元素的位置编号是-1。•最后一个元素的编号不是-0,这个跟数学中的概念一样的,-0=0,-0和0都是指向第一个元素。3.1.2分片

的定义与实现•序列的索引用来对单个元素进行访问,但若需要对一个范围内的元素进行访问,使用序列的索引进行操作就相对麻烦了,这时我们就需要有一个可以快速访问指定范围元素的索引实现。•Python中提供了分片的实现方式,所谓分片,就是

通过冒号相隔的两个索引下标指定索引范围。•比如“序列号”大巴上的同学被分成了6组,若把所有同学的序号放在一个字符串中,若想要取得第二组所有同学的序号,根据前面的做法,就需要从头开始一个一个下标去取,这样做起来不但麻烦,也耗时。若使用分片的方式,可以快速获取所有同学的序

号。•把所有同学的序号放在一个字符串中,各个序号使用逗号分隔,现要取得第二组所有同学的序号并打印出来。•在交互模式下输入:•>>>student='0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24

,25,26,27,28,29,30'•>>>student[10:19]#取得第二组所有同学的序号,加上逗号分隔符,需要取得10个字符•'5,6,7,8,9'•>>>student[-17:-1]#负数表明从右开始计数,取得最后一组所

有6名同学的序号•'25,26,27,28,29,3‘•分片操作既支持正数索引,也支持负数索引,并且对于从序列中获取指定部分元素非常方便。•分片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在分

片内的,第二个则不包含在分片内。这个像数学里面学习的a<=x<b,x是我们需要得到的元素,a是分片操作中的第一个索引,b是第二个索引,b不包含在x的需要范围内。•接着上面的示例,假设需要得到最后一组所有6名同学的

序号,使用正数索引可以这样操作:•>>>student='0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30'•>>>student[65:

82]#取得最后一组所有6名同学的序号•'25,26,27,28,29,30'•进行分片的时候,分片的开始和结束点都需要指定(不管是直接还是间接),用这种方式取连续的元素是没有问题的,但是若要取序列中不连续的元素就会比

较麻烦了或是不能操作。•比如要取序列number中的所有奇数,以一个序列展示出来,用前面的方法就不能实现了。•对于这种情况,Python为我们提供了另外一个参数——步长(steplength),该参数通常是隐式设置的。在普通的分片中,步长是1——分片操作就是按照这个步长逐个遍历序列的元素,遍历

后返回开始和结束点之间的所有元素,也可以理解为默认步长是1,既没有设置步长时,步长隐式设置值为1。•输入如下:•>>>student[0:10:1]•[0,1,2,3,4,5,6,7,8,9]•分片包含了另外一个数字。这种方式就是步长的显式设置。这个看起来和隐式设置步长没有什么区别,得到结果和

之前也是一样的。但是若将步长设置为比1大的数,那结果会怎样呢?输入如下:•>>>student[0:10:2]•[0,2,4,6,8]•由输出结果可以看到,将步长设置为2时,所得到的是偶数序列。•步长设置为大于1的数,那会得到一个跳过某些元素的序列。例如我们上面设置的步长为2,得到的序列

是从开始到结束每隔1个的元素序列。•比如还可以如下进行使用:•>>>student[:10:3]•[0,3,6,9]•>>>student[2:6:3]•[2,5]•>>>student[2:5:3]•[2]•>>>student[1:5:3

]•[1,4]•对于一个正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素;而对于负数步长,则是从序列的尾部开始向左提取元素,直到第一个元素。正数步长,必须让开始点小于结束点;而负数步长,则必须让开始点大于结束点。3.1.3序列的加法•通过使用加号可以进行序列的

连接操作,输入如下:•>>>[1,2,3]+[4,5,6]•[1,2,3,4,5,6]•>>>a=[1,2]•>>>b=[5,6]•>>>a+b•[1,2,5,6]•>>>s='hello,'•>>>w='worl

d'•>>>s+w•'hello,world'•数字序列可以和数字序列通过加号连接,连接后的结果还是数字序列,字符串序列也可以通过加号连接,连接后的结果还是字符串序列。那数字序列是否可以和字符序列相加呢?结果是怎样的,是数字序列还是字符串序列?•输入如下:•>>>[1,2]+'hell

o'•Traceback(mostrecentcalllast):•File"<pyshell#103>",line1,in<module>•[1,2]+'hello'•TypeError:canonlyconcatenatelist(not"

str")tolist•>>>type([1,2])#取得[1,2]的类型为list•<class'list'>•>>>type('hello')#取得hello的类型为字符串•<class'str'>•数字序列和字符串序列

是不能通过加号连接的。•只有类型相同的序列才能通过加号进行序列连接操作,不同类型的序列不能通过加号进行序列连接操作。3.1.4序列的乘法•在Python中,序列的乘法和我们以前数学中学习的乘法需要分开理解。•用一

个数字n乘以一个序列会生成新的序列,在新的序列中,原来的序列将被重复n次,这个就是序列中的乘法。交互模式下输入如下:•>>>'hello'*5•'hellohellohellohellohello'•>

>>[7]*10•[7,7,7,7,7,7,7,7,7,7]•序列被重复了对应的次数,而不是在数学中所理解的乘法。•Python中序列的乘法有什么特殊之处呢?•如果要创建一个重复的序列,我们就可以像上面的示例一样乘以一个想要得到的序列长度的数字,就可以快速得到需要的

列表,这样非常方便的。•空列表可以简单地通过两个中括号来表示([])——表示里面什么东西都没有。•如果要初始化一个长度为x的序列,需要使每个编码位置上都是空值,此时需要一个值来代表空值,即里面没有任何元素,我们需

要使用None。None是Python的内建值,它的确切含义是“这里什么也没有”。例如我们输入如下:•>>>sq=[None]*5#初始化sq为含有5个None的序列•>>>sq•[None,None,None,None,None]•序列的乘

法在做一些重复操作、空列表和None初始化上的操作还是挺方便的。3.1.5成员资格检测——in•为了检查一个值是否在序列中,Python为我们提供了in运算符。in运算符和前面讨论过的运算符有一点不同。in运算符用于检验某个条件是否为真,并返回检验结果,检验结果为真返回True,

结果为假则返回False。这种运算符称作布尔运算符,返回的真值叫做布尔值。•下面我们尝试in的用法,交互模式输入如下:•>>>greeting='hello,world'•>>>'w'ingreeting#检测w是否在字符串中•True•>>>'a'ingreeting•Fals

e•使用in可以很好的检测出对于的字符或数字是否在对应的列表中。3.1.6长度、最小值和最大值•Python为我们提供了长度、最大值和最小值的内建函数,对应的内建函数分别为len、max和min。•交互模式输入如下:•>>>numbers=[30

0,200,100,800,500]•>>>len(numbers)•5•>>>max(numbers)•800•>>>min(numbers)•100•>>>max(5,3,10,7)•10•>>>min(7,0,3,-1)•-1•len函数返回序列中所

包含的元素的数量,max函数和min函数则分别返回序列中最大和最小的元素。max和min函数的参数不是一个序列,而是以多个数字直接作为参数。3.2操作列表•在前面的例子中已经用了很多次列表,通过前面的示例我们看到列表的功用是比较强大的。本节将讨论列表不同于元组和字符串的地方:列表

是可变的(mutable),即列表的内容是可改变的。列表有很多比较好用、比较独特的方法。3.2.1列表的更新•我们在3.1节中所讲述的所有关于序列的操作,如索引、分片、相加、乘法等都适用于列表。本节将介绍一些序列中没有而列表中有的方法,这些方法的作用都是更新列表的,这些方法为:元素

赋值、元素删除、分片赋值和列表方法。•1.元素赋值•前面有学习过赋值语句,这个是最简单的改变列表的方式,例如a=2这样也是一种改变列表的方式。•创建一个列表,列表名为group,group中存放“序列号”上第一组所有5名同学的序号,通过编号标记某个特定位置的元素,对该位置的元素重新

赋值,如group[1]=9,就可以实现元素赋值。•创建列表group,赋值[0,1,2,3,4]后,计算机就在内存中为group变量开辟了一块内存空间,内存空间中存放数据的形式如下图所示。•当执行group[1]=9后,计算机会找到group变量,并找到索引下标为1的内存地址,将内存为1的地址空

间的值擦除,再更改上9这个值,就完成了赋值操作,如下图所示。•由图可以看到,下标为1对应的数值已经更改为9了,此处为便于读者观察,在下标为1处用了一个波浪线作为特别提示。从此时开始,group列表中的值就变更为0、9、2、3、

4了,后续再对group操作,就是在这个列表值的基础上进行操作了。•用代码实现上述操作如下:•>>>group=[0,1,2,3,4]•>>>group[1]=9#索引下标为1的元素重新赋值为9•>>>group•[0,9,2

,3,4]•>>>group[3]=30#同理,可以将索引下标为3的元素重新赋值为30•>>>group•[0,9,2,30,4]•这里不要忘记索引下标的编号是从0开始的。•对列表中的元素赋不同类型的值。对上面得到的group列表,在交互模式下做如下尝试:•>>>group[2]='xiaom

eng'#对编号为2的元素赋值,赋一个字符串•>>>group•[0,9,'xiaomeng',30,4]•>>>type(group)•<class'list'>•>>>type(group[1])#别忘了查看类型函数的使用•<class'int'>•>>>type(gr

oup[2])•<class'str'>•由输出结果可以看到,可以对一个列表中的元素赋不同类型的值。•2.增加元素•由元素赋值的示例中看到,不能为一个不存在的位置赋值,这么说就是一旦初始化了一个列表,就不能再往这个列表中增加元素了。•这样若需要往列表中增加元素,就非常麻烦了,需要对整个列表中的

元素都复制一遍,再添加需要增加的元素,Python中有提供对应的方法来帮助我们做这件事情。看如下输入:•>>>group•[0,9,'xiaomeng',30,4]•>>>group.append('

try')•>>>group•[0,9,'xiaomeng',30,4,'try']•可以使用append()方法来解决。append()方法是一个用于在列表末尾添加新的对象的方法。该方法的语法如下:•list.a

ppend(obj)•此语法中list指的是列表,obj指的是需要添加到list列表末尾的对象。•append()方法操作列表时,返回的列表不是一个新列表,而是直接在原来的列表上做修改,然后将修改过的列表直接返回。如果是创建新列表,就会多出一倍的存储空间。•以group列表为例,未

使用append()方法之前,group列表中的内容是[0,9,'xiaomeng',30,4],这是已经占用了一块存储空间的值。•使用append()方法后,若创建了新列表,就会在内存中再开辟一块新的存储空间,新开辟的存储空间中存放的内容是[0,9,'xiaomeng',30

,4,'try'],和原列表比起来,就相当于增加了一倍的存储空间。•而直接修改列表的情形会是这样的:内容是[0,9,'xiaomeng',30,4]的存储空间继续占有,使用append()方法后,会在现有的存储空间中增加一小块内存,用来存放新增加的try字符串,相对于原列表,

仅仅增加了try字符串所占据的存储,而不是增加一倍的存储空间。•3.删除元素•上面学习了往列表中增加元素,那么是否可以往列表中删除元素呢?看如下示例:•>>>group•[0,9,'xiaomeng',3

0,4,'try','test']•>>>len(group)#使用序列中获取长度的函数•7•>>>delgroup[6]#删除最后一个元素,注意索引下标与序列长度的关系•>>>print('删除最后一个元素后的结果:',group)•

删除最后一个元素后的结果:[0,9,'xiaomeng',30,4,'try']•>>>len(group)•6•>>>group•[0,9,'xiaomeng',30,4,'try']•>>>delgroup[2]#删除索引下标为2的元素•>>>

print('删除索引下标为2的元素后的结果:',group)•删除索引下标为2的元素后的结果:[0,9,30,4,'try']•>>>len(group)•5•由输出结果可以看到,使用del可以删除列表中的元素。•使用del除了可以删除列表中

的字符串,也可以删除列表中的数字。•在交互模式下输入:•>>>group•[0,9,30,4,'try']•>>>len(group)•5•>>>delgroup[3]•>>>print('删除索引下标为3的元素后的结果:

',group)•删除索引下标为3的元素后的结果:[0,9,30,'try']•>>>len(group)•4•由输出结果可以看到,已经从group列表中删除了对应的数字。•4.分片赋值•分片赋值是列表的一个强大的特性。先看如下示例:•>>>list('北京将举办

2022年的冬奥会')•['北','京','将','举','办','2','0','2',‘2','年','的','冬','奥','会']•>>>greeting=list('welcometobeijing')•>>>greeting•['w','e','l','c','o','m','e'

,'','t','o','','b','e','i','j','i','n','g']•>>>greeting[11:18]•['b','e','i','j','i','n','g']•>>>greeting[11:18]=list('china')•>>>gree

ting•['w','e','l','c','o','m','e','','t','o','','c','h','i','n','a']•可以通过分片赋值直接对列表做变更。•看下面的示例:•>>>field=list('ae')•>>>field•['a','e']•>

>>field[1:1]=list('bcd')•>>>field•['a','b','c','d','e']•>>>goodnews=list('北京将举办冬奥会')•>>>goodnews•['北','京','将','举','办

','冬','奥','会']•>>>goodnews[5:5]=list('2022年的')•>>>goodnews•['北','京','将','举','办','2','0','2',‘2','年','的','冬','奥','会']•由输出结果可以看到,使用列表的分片赋值功能,可以在不替换任何原有

元素的情况下在任意位置插入新元素。3.2.2多维列表•目前,我们接触到的列表都是一维的,也就是一个列表里面有多个元素,每个元素对应一个数值或一个字符串。那列表中是否可以有列表呢,这里就引入了多维列表的概念。•所谓多维列表,就是列表中的元素也是

列表。•就如“序列号”大巴上的同学,目前分成了6个小组,对于“序列号”大巴,我们可以看成是一个列表,6个小组也可以看成在“序列号”大巴里的6个列表,每个列表中又分别存放了各个同学的序号。•在交互模式下表示如下:•>>>bus=[[0,1,2,3,4],[5,6,7,8,9],[

10,11,12,13,14],[15,16,17,18,19],[20,21,22,23,24],[25,26,27,28,29,30]]•>>>bus•[[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14],[

15,16,17,18,19],[20,21,22,23,24],[25,26,27,28,29,30]]•>>>group1=bus[0]•>>>group1#取得第一组所有同学的序号•[0,1,2,3,4]•>>>type(group1)•<clas

s'list'>•>>>group2=bus[1]#取得第二组所有同学的序号•>>>group2•[5,6,7,8,9]•>>>type(group2)•<class'list'>•>>>group6=bus[5]#取得第三组所有同学的序号•>>>group6•[25

,26,27,28,29,30]•>>>type(group6)•<class'list'>•>>>number0=group1[0]#取得0号同学的序号•>>>number0•0•>>>number30=group6[5]#取得30号同学的序号•>>>number30•3

0•在列表中可以嵌套列表,嵌套的列表取出后还是列表。3.2.3列表方法•我们之前的章节已经介绍了函数,本节介绍一个与函数密切相关的概念——方法。•方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能

是字符串或者其它类型的对象。方法的调用方式我们前面有一个示例,调用语法如下:•对象.方法(参数)•由上面的语法及前面append()方法的示例我们可知:方法的定义方式是将对象放到方法名之前,两者之间用一个点号隔开,方法后面的括号中可以根据需要带上参数。除语法上的一些不同,方法调用和函数调用很

类似。•列表中有count、index、sort等一些比较常用的方法,下面逐一进行介绍。•1.append•该方法前面已经介绍,其功能是在列表的末尾添加新的对象。•使用方式为如前面讲解的:•list.append(obj)•在实际项目应用中,列表中的append()方法是使用

频率最高的一个方法,涉及列表操作的,都或多或少需要用上append()方法进行元素的添加。•2.extend•extend()方法用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。•extend()方法的语法如下:•list.extend(seq)•此语法中li

st代表的是列表,seq代表元素列表。•该方法使用示例如下:•>>>a=['hello','world']•>>>b=['python','is','funny']•>>>a.extend(b)•>>>a•[

'hello','world','python','is','funny']•extend()方法和序列相加有什么不同之处?•extend()方法和序列相加的主要区别是:extend()方法修改了被扩展的列表;原始的连接

操作会返回一个全新的列表,而不会修改原始的变量。•在实际项目应用中,extend()方法也是一个使用频率较高的方法,特别在涉及多个列表合并时,使用extend()方法非常便捷。•3.index•index

()方法用于从列表中找出某个值第一个匹配项的索引位置。•index()方法的语法如下:•list.index(obj)•此语法中list代表的是列表,obj代表查找的对象。•该方法使用示例如下:•>>>field

=['hello','world','python','is','funny']•>>>print('hello的索引位置为:',field.index('hello'))•hello的索引位置为:0•>>>print('python的索引位置为:',field.index('python'))•

python的索引位置为:2•在实际项目应用中,index()方法的使用不是很多,在功能上,使用in可以达到和index()相同的功能,除非要返回搜索对象的具体索引位置时,才考虑使用index()方法,其他情形使用in会更高效和便捷。•4.insert•inser

t()方法用于从列表中找出某个值第一个匹配项的索引位置。•insert()方法的语法:list.insert(index,obj)•此语法中list代表的是列表,index代表对象obj需要插入的索引位置,obj代表要插入列表中的对象。该方

法使用示例如下:•>>>num=[1,2,3]•>>>print('插入之前的num:',num)•插入之前的num:[1,2,3]•>>>num.insert(2,'插入位置在2之后,3之前')•>>>print('插入之后的num:',n

um)•插入之后的num:[1,2,'插入位置在2之后,3之前',3]•在实际项目应用中,insert()方法较多地用于在列表指定位置插入指定元素,多用于单个元素的插入,当涉及大量元素插入时,使用分片赋值要更好一

些。•5.sort•sort()方法用于对原列表进行排序,如果指定参数,则使用参数指定的比较方法进行排序。•sort()方法的语法:list.sort(func)•此语法中list代表的是列表,func为可选参数,如果指定了该参数会使用该参数的方法进行

排序。该方法使用示例如下:•>>>num=[5,8,1,3,6]•>>>num.sort()•>>>print('num调用sort方法后:',num)•num调用sort方法后:[1,3,5,6,8]•在实际项目应用中,sort()方法应用频率不是很高,在需要涉及一些稍微简单的排序时会使用

sort()方法,很多时候可能需要开发者自己实现有针对性的排序方法。•6.copy•copy()方法用于复制列表,类似于a[:]。•copy()方法的语法:list.copy()•此语法中list代表的是列表,不需要传入参数。•该方法使用示例如下:•>>>field=['stud

y','python','is','happy']•>>>copyfield=field.copy()•>>>print('复制操作结果:',copyfield)•复制操作结果:['study','p

ython','is','happy']•操作结果和该方法的意思一样,是原原本本的拷贝操作。•在实际项目应用中,copy()方法的使用频率不是很高,但copy()方法是一个比较有用的方法,在列表的结构复制上很好

用,效率也比较高。•7.remove•remove()方法用于移除列表中某个值的第一个匹配项。•remove()方法的语法:list.remove(obj)•此语法中list代表的是列表,obj为列表中药

移除的对象。•该方法使用示例如下:•>>>field=['女排','精神','中国','精神','学习','精神']•>>>print('移除前列表field:',field)•移除前列表field:['女排','精神','中国','精神','学习','精神']•>>>field.

remove('精神')•>>>print('移除后列表field:',field)•移除后列表field:['女排','中国','精神','学习','精神']•在实际项目应用中,remove()方法的使用

频率不高。•8.pop•pop()方法用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。•pop()方法的语法:list.pop(obj=list[-1])•此语法中list代表的是列表,obj为可选择参数,代表要移除列表元素的对象。该方法使用示例如下:•>>>fie

ld=['hello','world','python','is','funny']•>>>field.pop()#不传参数,默认移除最后一个元素•'funny'•>>>print('移除元素后的field:',fi

eld)•移除元素后的field:['hello','world','python','is']•>>>field.pop(3)#移除编号为3的元素•'is'•特别提醒:在Python中,pop()方法是唯一一个既能修改列表又能返回元素值(除了None)的列表方法。•使用

pop()方法可以实现一种常见的数据结构——栈。•栈的原理就像堆放盘子一样,一次操作一个盘子,要将若干盘子堆成一堆,只能在一个盘子的上面放另一个盘子;要拿盘子时,只能从顶部一个一个地往下拿,最后放入的盘子是最先被拿的

。栈也是这样,最后放入栈的元素最先被移除,称为LIFO(LastInFirstOut),即后进先出。•在实际项目应用中,pop()方法的使用频率并不高,但不能以此否认pop()方法的使用价值,pop()是一个非常有使用价值的方法,在一

些问题的处理上它有独特的功能特性,读者在使用时可以多加留意。•9.reverse•reverse()方法用于反向列表中元素。•reverse()方法的语法:list.reverse()•此语法中list代表的是列表

,该方法不需要传入参数。•该方法使用示例如下:•>>>num=[1,2,3]•>>>print('列表反转前num:',num)•列表反转前num:[1,2,3]•>>>num.reverse()•>>>print('列表反转后:',num)•列表反转后:[3,

2,1]•在实际项目应用中,reverse()方法一般会配合sort()方法一起使用,目的是更方便于排序,为排序节省时间或内存开销,对于不同业务场景会有不同的节省方式。•10.clear•clear()方法用于清空列表,类似于dela[:]。•clear()方法的语法:list.clear

()•此语法中list代表的是列表,不需要传入参数。•该方法使用示例如下:•>>>field=['study','python','is','happy']•>>>field.clear()•>>>print('field调用clear方法后的结果:',field)•field调用

clear方法后的结果:[]•在实际项目应用中,clear()方法一般应用在涉及大量列表操作,且类别元素比较多的场景中,在列表元素比较多时,一般会涉及分批次的操作,每批次操作时,为减少对内存的占用,一般会使用clear()方法先清空列表,高效且快速。•11.count•count

()方法用于统计某个元素在列表中出现的次数。•count()方法的语法如下:•list.count(obj)•此语法中list代表的是列表,obj代表列表中统计的对象。•该方法使用示例如下:•>>>fi

eld=list('hello,world')•>>>field•['h','e','l','l','o',',','w','o','r','l','d']•>>>print('列表field中,字母o的个数:',field.count('o'))#

统计列表中字符个数•列表field中,字母o的个数:2•在实际项目应用中,count()方法用得比较少,是一个低频使用的方法。•12.高级排序•如果希望元素能按特定的方式进行排序可以自定义比较方法。•sort方法有两个可选参数—

—key和reverse。看如下示例:•>>>field=['study','python','is','happy']•>>>field.sort(key=len)#按字符串由段到长排序•>>>field.sort(key=len,reverse=True)#按字符串排序,传递两个参数•>>>f

ield•['python','study','happy','is']•>>>num=[5,8,1,3,6]•>>>num.sort(reverse=True)#排序后逆序•>>>num•[8,6,5,3,1]•在实际项目应用中,高级排序应用的场

景比较多,也各有特色,不同的项目会有不同的需求场景,需要视具体项目而定。3.3操作元组•Python的元组与列表类似,不同之处在于元组的元素不能修改(是否记得我们前面多次提到的字符串,它也是不能修改的)。创建元组的方法很简单:

如果你使用逗号分隔了一些值,那么你就自动创建了元组。如下输入:•>>>6,7,8•(6,7,8)•>>>'hi','python'•('hi','python')•该操作用逗号分隔了一些值,结果输出是元组。3.3.1tuple函数的定义与使用•tu

ple函数的功能和list函数基本上是一样的:以一个序列作为参数并把它转换为元组。如果参数是元组,那么参数就会被原样返回。如下输入:•>>>tuple('hi')•('h','i')•>>>tuple(('hi','python'))#参数是元组•('hi','pytho

n')•>>>tuple(['hi','python'])#列表转元组•('hi','python')•>>>list(('hi','python'))#元组转列表•['hi','python']•tuple

函数传入元组参数后,得到的返回值就是传入参数。3.3.2元组的基本操作•和列表一样,元组也有一些基本的操作。如访问元组、修改元组、删除元组、索引和截取等操作。当然,这里的修改、删除和截取等操作和列表的操作不太

一样。•1.访问元组•元组可以使用下标索引来访问元组中的值,看如下示例:•>>>strnum=('hi','python',2017,2018)•>>>print('strnum[1]is:',strnum[1])•strnum[1]is:python•

>>>print('strnum[3]is:',strnum[3])•strnum[3]is:2018•>>>numbers=(1,2,3,4,5,6)•>>>print('numbers[5]is:',numbers[5])•numbers[5]is:6•访问元组是比较普通的应用,也是元组必备的

功能。•2.元组组合•元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,看如下示例:•>>>greeting=('hi','python')•>>>yearnum=(2018,)•>>>print("合并结果为:

",greeting+yearnum)•合并结果为:('hi','python',2018)•元组连接组合的实质是生成了一个新的元组,并非是修改了原本的某一个元组。•3.删除元组•元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,看如下示例:•>>>gr

eeting=('hi','python')•>>>greeting•('hi','python')•>>>print('删除元组greeting前:',greeting)•删除元组greeting前:('hi','python')•>>>delgreeting•>>>pri

nt('删除元组greeting后:',greeting)•Traceback(mostrecentcalllast):•File"<pyshell#281>",line1,in<module>•print('删除元组greeting后:

',greeting)•NameError:name'greeting'isnotdefined•>>>greeting•Traceback(mostrecentcalllast):•File"<pyshell#282>",lin

e1,in<module>•greeting•NameError:name'greeting'isnotdefined•以上实例元组被删除后,输出变量会有异常信息,输出结果告诉我们field没有定义,即field已经不存在了。•4.元组索引

、截取•因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,看如下示例:•>>>field=('hello','world','welcome')•>>>field[2]•'welcome'•>>>field[-2]•'world'•>>>field[1:]•

('world','welcome')3.3.3元组内置函数•Python元组提供了一些内置函数,如计算元素个数、返回最大值、最小值、列表转换等函数。•len(tuple),计算元组元素个数。使用方式

如下:•>>>greeting=('hello','world','welcome')•>>>len(greeting)•3•>>>greeting=('hello',)•>>>len(greeting)•1•>>>greeting=()•>>>len(

greeting)•0•max(tuple)函数用于返回元组中元素的最大值,使用方式如下:•>>>number=(39,28,99,88,56)•>>>max(number)•99•>>>tup=('6','3','8')•>>>max(tup)•'8'>>>•mix=(38,26,'

77')•>>>mix•(38,26,'77')•>>>max(mix)•Traceback(mostrecentcalllast):•File"<pyshell#296>",line1,in<module>•max(mix)•TypeError:'>'notsupporte

dbetweeninstancesof'str'and'int'•max(tuple)函数既可以应用于数值元组,也可以应用于字符串元组,但是不能应用于数值和字符串混合的元组中。•min(tuple)函数用于返回元组中元素的最小值,使用方

式如下:•>>>number=(39,28,99,88,56)•>>>min(number)•28•>>>tup=('6','3','8')•>>>min(tup)•'3'•>>>mix=(38,26,'77')•>>

>mix•(38,26,'77')•>>>min(mix)•Traceback(mostrecentcalllast):•File"<pyshell#298>",line1,in<module>•min(mix)•TypeError:'<'notsupportedbetweenins

tancesof'str'and'int'•min(tuple)函数既可以应用于数值元组,也可以应用于字符串元组,但是同样不能应用于数值和字符串混合的元组中。3.4列表与元组的区别•列表与元组的区别是元组的元素

不能修改。元组一旦初始化就不能修改。•不可变的元组有什么意义?因为元组不可变,所以代码更安全。如果可能,能用元组代替列表就尽量用元组。3.5活学活用——角色互换•通过前面几节的学习,我们知道了列表和元组是可以相互转化的,但对于在元组中有列

表的情况,元组转换为列表时,得到的会是什么结果?对于在列表中有元组的情况,列表转换为元组时,又会得到什么结果?•具体代码示例参考书本代码。3.6技巧点拨•1.对序列中的元素进行访问时,尝试输入序列中不存在的编号,如在greeting='hello'示例中输入greet

ing[10],看看会得到什么结果,执行greeting[-10]又会得到什么结果。•2.观察以下输入,思考会得到什么结果,并想想为什么会是这个结果。•>>>max(ab,abc,abcd)•Traceback(mostrecentcall

last):•File"<pyshell#308>",line1,in<module>•max(ab,abc,abcd)•NameError:name'ab'isnotdefined•>>>max('ab','abc','abcd')•'abcd‘•详情参考书中解答。3.7问题探讨•1.通用序

列操作中所介绍的方法对列表和元组都通用吗?•2.在实际项目应用中,根据什么来选择使用列表还是元组?3.8章节回顾•1.回顾通用序列的基本操作,索引、分片、序列相加、乘法等分别是怎样实现的。•2.回顾列表的基本操作,如何更新列表

,列表的基本方法有哪些,各自怎样使用。•3.回顾元组的基本操作,元组的内置函数有哪些。•4.回顾列表与元组的区别。3.9实战演练•参考书中练习

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?