《Python序列》PPT课件.ppt
《《Python序列》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《Python序列》PPT课件.ppt(60页珍藏版)》请在三一办公上搜索。
1、第2章 Python序列,主 要 内 容,列表元组字典,2,概 述,序列是Python中经常用到的数据存储方式,是按某顺序排列的数据。Python中常用的序列结构有列表、元组、字典、字符串等等。列表、元组、字符串等序列均支持双向索引第一个元素下标为0,第二个元素下标为1,以此类推;最后一个元素下标为-1,倒数第二个元素下标为-2,以此类推。,3,2.1 列表,列表的创建和删除列表元素的增加列表元素的删除列表元素访问与计数成员资格判断切片操作列表排序用于序列操作的常用内置函数,4,2.1 列表,列表是Python中内置可变序列,是元素的有序集合,列表中每一个数据称为元素,列表的所有元素放在一对中
2、括号“”和“”中,并使用逗号分隔开;列表中的各数据的类型可以不同,可以分别为整数、实数、字符串等基本类型,甚至是列表、元素、字典、集合以及其他自定义类型的对象例:10,20,30,40crunchy frog,ram bladder,lark vomitspam,2.0,5,10,20file1,200,7,file2,260,9,5,6,2.1 列表,2.1.1 列表创建与删除,用“=”创建列表,“=”赋值的同时创建 alist=a,b,mpilgrim,z,example alist=#创建空列表用list()函数将元组、range对象、字符串或其他类型的可迭代对象类型的数据转换为列表。例
3、如:alist=list(3,5,7,9,11)#圆括号表示元组 alist3,5,7,9,11 list(range(1,10,2)#该range返回 1,3,5,7,9 list(hello world)h,e,l,l,o,w,o,r,l,d x=list()#创建空列表 x,7,2.1.1 列表创建与删除,内置函数range(),语法为range(start,stop,step),第一个参数表示起始值(默认为0)第二个参数表示终止值,结果中不包括这个值第三个参数表示步长(默认为1),该函数在Python 3.x中返回一个range可迭代对象,在Python 2.x中返回一个包含若干整数的
4、列表。list(range(10)0,1,2,3,4,5,6,7,8,9 list(range(3,10,2)3,5,7,9列表推导式*(本课程不要求)是一种生成符合特定要求列表的方式。,8,2.1.1 列表创建与删除,del命令删除整个列表,如果列表对象所指向的值不再有其他对象指向,Python将同时删除该值。alist=a,b,mpilgrim,z,example del alist alistTraceback(most recent call last):File,line 1,in alistNameError:name alist is not defined,9,2.1.2 列表
5、元素的增加,(1)“+”运算符来实现将元素添加到列表中的功能。不是真的为列表添加元素,而是创建一个新列表将原列表中的元素和新元素依次复制到新列表的内存空间涉及大量元素的复制,该操作速度较慢,在涉及大量元素添加时不建议使用该方法。aList=3,4,5 bList=aList+7 aList3,4,5 bList3,4,5,7,10,2.1.2 列表元素的增加,(2)append()方法,修改原列表,在列表尾部添加元素,速度较快,例如:aList.append(9)#设aList为3,4,5,7 aList3,4,5,7,9比较“+”和append()这两种方法的速度差异,分别生成0,1,2,9
6、999:import timeresult=start=time.time()#time模块的time()函数返回当前时间for i in range(10000):result=result+iprint(len(result),time.time()-start)result=start=time.time()for i in range(10000):result.append(i)print(len(result),time.time()-start)打印结果:10000,0.003000020980834961,11,2.1.2 列表元素的增加,Python采用的是基于值的自动内存管
7、理方式,当为对象修改值时,并不是真的直接修改变量的值,而是使变量指向新的值。,12,例:a=5print(id(a)#函数id(a)获取a的内存地址a=6print(id(a)b=5print(id(b)打印结果:147126536014712653921471265360,例:a=1,2,3print(id(a)a=1,2print(id(a)b=1,2,3print(id(b)打印结果:红色地址不是每次执行都相同,2.1.2 列表元素的增加,对于列表、集合、字典等可变序列类型而言,情况稍微复杂一些。以列表为例:列表中包含的是元素值的引用,而不是直接包含元素值。通过下标来修改序列中元素的值或
8、通过可变序列对象自身提供的方法来增加、删除和修改元素时,列表在内存中的起始地址是不变的,仅仅是被改变值的元素地址发生变化。,13,a=1,2,4 b=1,2,3 a=bFalse id(a)=id(b)False id(a0)=id(b0)True a=1,2,3 id(a)25289752 a.append(4)id(a)25289752 a.remove(3)#删除a中的第一个3 a1,2,4 id(a)25289752 a0=5 a5,2,4 id(a)25289752,2.1.2 列表元素的增加,(3)使用列表对象的extend()方法可以将另一个迭代对象的所有元素添加至该列表对象尾部
9、,并不改变其内存首地址。a.extend(7,8,9)#设a原为5,2,4 a5,2,4,7,8,9 id(a)25289752 a.extend(11,13)a5,2,4,7,8,9,11,13 a.extend(15,17)a5,2,4,7,8,9,11,13,15,17 id(a)25289752,14,2.1.2 列表元素的增加,(4)使用列表对象的insert()方法将元素添加至列表的指定位置。a.insert(3,6)a5,2,4,6,7,8,9,11,13,15,17insert()方法会涉及到插入位置之后所有元素的移动,这会影响处理速度,尽量从列表尾部进行元素的增加操作,如使用
10、append(),15,2.1.2 列表元素的增加,比较append和insert:import timedef Insert():#定义函数Insert()a=for i in range(10000):a.insert(0,i)def Append():a=for i in range(10000):a.append(i)start=time.time()for i in range(10):Insert()print(Insert:,time.time()-start),16,start=time.time()for i in range(10):Append()print(Append
11、:,time.time()-start)运行结果如下:Insert:0.578000068665Append:0.0309998989105,2.1.2 列表元素的增加,(5)使用乘法扩展列表对象,将列表与整数相乘,生成一个新列表,新列表是原列表中元素的重复。aList=3,5,7 bList=aList id(aList)57091464 id(bList)57091464 aList=aList*3 aList3,5,7,3,5,7,3,5,7 bList3,5,7 id(aList)57092680 id(bList)57091464,17,注意:使用“*”运算符将包含列表的列表重复并创
12、建新列表时,并不创建元素的复制,而是创建已有对象的引用。因此修改其中一个值时,相应的引用也会被修改:x=None*2*3 xNone,None,None,None,None,None x00=5 x5,None,5,None,5,None x=1,2,3*3 x00=10 x10,2,3,10,2,3,10,2,3,2.1.3 列表元素的删除,(1)使用del命令删除列表中的指定位置上的元素。del命令也可以直接删除整个列表。aList=3,5,7,9,11 del aList1 aList3,7,9,11 del aList aListTraceback(most recent call l
13、ast):File,line 1,in aListNameError:name aList is not defined,18,2.1.3 列表元素的删除,(2)使用列表的pop()方法删除并返回指定(默认为最后一个)位置上的元素,如果给定的索引超出了列表范围则抛出异常。a_list=3,5,7,9,11 a_list.pop()#列表尾部操作,速度快11 a_list3,5,7,9 a_list.pop(1)#非列表尾部操作,速度慢5 a_list3,7,9,19,2.1.3 列表元素的删除,(3)使用列表对象的remove()方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出
14、异常。a_list=3,5,7,9,7,11 a_list.remove(7)a_list3,5,9,7,11问:要删除列表中所有的7,如何写代码?,20,2.1.4 列表元素访问与计数,使用下标直接访问列表元素,指定下标不存在则抛出异常 aList3#读取6 aList3=5.5#赋值 aList3,4,5,5.5,7,9,11,13,15,17 aList15Traceback(most recent call last):File,line 1,in aList15IndexError:list index out of range,21,2.1.4 列表元素访问与计数,使用列表对象的i
15、ndex方法获取指定元素首次出现的下标,不存在指定元素则抛出异常 aList3,4,5,5.5,7,9,11,13,15,17 aList.index(7)4 aList.index(100)Traceback(most recent call last):File,line 1,in aList.index(100)ValueError:100 is not in list,22,2.1.4 列表元素访问与计数,列表对象的count方法统计指定元素在列表中出现的次数 aList=3,4,5,5.5,7,9,11,13,5,17 aList.count(7)1 aList.count(0)0
16、aList.count(5)2,23,2.1.5 成员资格判断,如果需要判断列表中是否存在指定的值,可以使用“in”关键字来判断一个值是否存在于列表中,返回结果为“True”或“False”。,24,aList3,4,5,5.5,7,9,11,13,15,17 3 in aListTrue 18 in aListFalse bList=1,2,3 3 in bListFalse 3 not in bListTrue 3 in bListTrue aList=3,5,7,9,11 bList=a,b,c,d(3,a)in zip(aList,bList)True#zip(列表1,列表2,):将多
17、个列表对应位置元素组合为元组,返回包含这些元组的列表 for a,b in zip(aList,bList):print(a,b)3 a5 b7 c9 d,2.1.6 切片操作,切片是Python序列的重要操作之一,适用于列表、元组、字符串、range对象等类型。切片使用“数字-开始位置:数字-截止(但不包含)位置:数字-切片的步长(默认为1)”来完成,当步长省略时可以顺便省略最后一个冒号。使用切片可以:截取列表中的任何部分,得到一个新列表。修改、增加、删除列表中部分元素切片操作返回一个新的列表。切片操作不会因为下标越界而抛出异常,而是在列表尾部截断或者返回一个空列表。,25,2.1.6 切片
18、操作,aList=3,4,5,6,7,9,11,13,15,17 aList:3,4,5,6,7,9,11,13,15,17 aList:-117,15,13,11,9,7,6,5,4,3 aList:23,5,7,11,15 aList1:24,6,9,13,17,26,aList3:6,7,9,11,13,15,17 aList3:66,7,9 aList3:6:16,7,9 aList0:100:1#超出范围3,4,5,6,7,9,11,13,15,17 aList100:,切片获取列表的部分:,2.1.6 切片操作,切片原地修改列表内容,27,aList=3,5,7 aListlen(
19、aList):aListlen(aList):=9 aList3,5,7,9 aList:3=1,2,3 aList1,2,3,9,aList:3=aList9 aList=list(range(10)aList0,1,2,3,4,5,6,7,8,9 aList:2=0*(len(aList)/2)aList0,1,0,3,0,5,0,7,0,9,2.1.6 切片操作,使用del与切片结合来删除列表元素 aList=3,5,7,9,11 del aList:3 aList9,11,28,2.1.6 切片操作,切片返回的是列表元素的浅复制,29,aList=3,5,7 bList=aList#深
20、复制,两列表数据在同一内存地址#改其中一个其他均一起改 bList3,5,7 bList1=8 aList3,8,7 aList=bListTrue aList is bListTrue id(aList)19061816 id(bList)#地址相同19061816,aList=3,5,7 bList=aList:#浅复制,不同地址 aList=bList#列表元素相同True aList is bListFalse id(aList)=id(bList)#地址不同False bList1=8 bList3,8,7 aList3,5,7 aList=bListFalse aList is b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python序列 Python 序列 PPT 课件

链接地址:https://www.31ppt.com/p-5453267.html