资源描述:
《Python程序设计 第2章 Python序列ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第2章Python序列Python序列概述Python序列类似于其他语言中的数组,但功能要强大很多。Python中常用的序列结构有列表、元组、字符串,字典、集合以及range等对象也支持很多类似的操作。列表、元组、字符串支持双向索引,第一个元素下标为0,第二个元素下标为1,以此类推;最后一个元素下标为-1,倒数第二个元素下标为-2,以此类推。2.1列表列表是Python中内置有序可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开;当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙;在Python中
2、,一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、元组、字典、集合以及其他自定义类型的对象。[10,20,30,40]['crunchyfrog','rambladder','larkvomit']['spam',2.0,5,[10,20]][['file1',200,7],['file2',260,9]]列表常用方法2.1列表2.1.1列表创建与删除使用“=”直接将一个列表赋值给变量即可创建列表对象>>>a_list=['a','b','mpilgrim','z','example']>>>a_
3、list=[]#创建空列表也可以使用list()函数将元组、range对象、字符串或其他类型的可迭代对象类型的数据转换为列表。>>>a_list=list((3,5,7,9,11))>>>a_list[3,5,7,9,11]>>>list(range(1,10,2))[1,3,5,7,9]>>>list('helloworld')['h','e','l','l','o','','w','o','r','l','d']>>>x=list()#创建空列表2.1.1列表创建与删除当不再使用时,使用del命令删除整个列表,如果列表对象所指向的值不
4、再有其他对象指向,Python将同时删除该值。>>>dela_list>>>a_listTraceback(mostrecentcalllast):File"",line1,ina_listNameError:name'a_list'isnotdefined2.1.2列表元素的增加(1)可以使用“+”运算符将元素添加到列表中。>>>aList=[3,4,5]>>>aList=aList+[7]>>>aList[3,4,5,7]严格意义上来讲,这并不是真的为列表添加元素,而是创建一个新列表,并将原列表中
5、的元素和新元素依次复制到新列表的内存空间。由于涉及大量元素的复制,该操作速度较慢,在涉及大量元素添加时不建议使用该方法。2.1.2列表元素的增加(2)使用列表对象的append()方法,原地修改列表,是真正意义上的在列表尾部添加元素,速度较快。>>>aList.append(9)>>>aList[3,4,5,7,9]所谓“原地”,是指不改变列表在内存中的首地址。2.1.2列表元素的增加下面的代码比较了“+”和append()这两种方法的速度差异:importtimeresult=[]start=time.time()foriinrange
6、(10000):result=result+[i]print(len(result),',',time.time()-start)result=[]start=time.time()foriinrange(10000):result.append(i)print(len(result),',',time.time()-start)2.1.2列表元素的增加在上面的代码中,分别重复执行10000次“+”运算和append()方法为列表插入元素并比较这两种方法的运行时间。在代码中,使用time模块的time()函数返回当前时间,然后运行代码之后
7、计算时间差。10000,0.2180120944976806610000,0.0030000209808349612.1.2列表元素的增加Python采用的是基于值的自动内存管理方式,当为对象修改值时,并不是真的直接修改变量的值,而是使变量指向新的值,这对于Python所有类型的变量都是一样的。>>>a=[1,2,3]>>>id(a)#返回对象的内存地址20230752>>>a=[1,2]>>>id(a)203382082.1.2列表元素的增加列表中包含的是元素值的引用,而不是直接包含元素值。如果是直接修改序列变量的值,则与Python普
8、通变量的情况是一样的,而如果是通过下标来修改序列中元素的值或通过可变序列对象自身提供的方法来增加和删除元素时,序列对象在内存中的起始地址是不变的,仅仅是被改变值的元素地址发生变化,也就是所谓的