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.2180120944976806610000,0.003000020980834961,10,2.1.2 列表元素的增加,Python采用的是基于值的自动内存管理方式,当为对象修改值时,并不是真的直接修改变量的值,而是使变量指向新的值。,10,例: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