您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第2章+Python序列
第2章Python序列肖川cxiao@fudan.edu.cn1outline列表元组字典集合其他数据结构字符串range['crunchyfrog','rambladder','larkvomit']('crunchyfrog','rambladder','larkvomit'){'x':'crunchyfrog','y':'rambladder','z':'larkvomit'}{'crunchyfrog','rambladder','larkvomit'}“crunchyfrogrambladderlarkvomit”有序、可变有序、不可变无序、可变无序、可变有序、不可变2序列序列是一系列连续值,它们通常是相关的,并且按一定顺序排列。除字典和集合之外,列表、元组、字符串等序列均支持双向索引,第一个元素下标为0,第二个元素下标为1,以此类推;最后一个元素下标为-1,倒数第二个元素下标为-2,以此类推。aList[3]、bTuple[-2]、str[-5]、str[0]3双向索引内置函数len(seq):序列长度(序列元素个数)...…序列S(列表S、元组S、字符串S):红线上为正向索引,红线下为逆向索引。S[len(S)-1]S[-1]S[len(S)-2]S[-2]S[len(S)-3]S[-3]S[i]S[i-len(S)]S[2]S[2-len(S)]S[1]S[1-len(S)]S[0]S[-len(S)]正向索引的下标为正数,逆向索引的下标为负数。正向索引下标为i的元素,其逆向索引的的下标为i–len(S)。同一个元素其正向索引下标与其逆向索引下标之差为len(S)。共len(S)个元素4列表5列表列表是Python中内置可变序列,是一个元素的有序集合;列表中的每一个数据称为元素,列表的所有元素放在一对中括号[]中,并使用逗号分隔开;当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙。6列表在Python中,一个列表中的数据类型可以各不相同,可以分别为整数、实数、字符串等基本类型,甚至是列表、元素、字典、集合以及其他自定义类型的对象。[10,20,30,40]['crunchyfrog','rambladder','larkvomit']['spam',2.0,5,[10,20]][['file1',200,7],['file2',260,9]]7创建列表(1)直接赋值:使用=直接将一个列表赋值给变量即可创建列表对象。a_list=['a','b','mpilgrim','z','example']a_list=[]#创建空列表8访问列表元素使用下标直接访问列表元素aList=[3,4,5,6,7,9,11,13,15,17]aList[3]6aList[3]=5.5aList[3,4,5,5.5,7,9,11,13,15,17]如果指定下标不存在,则抛出异常aList[15]Traceback(mostrecentcalllast):Filepyshell#34,line1,inmoduleaList[15]IndexError:listindexoutofrange9课堂练习:月份转换10列表元素计数内置函数len(.)返回列表元素的总个数。11列表是可变对象修改列表对象v.s.修改列表元素12列表是可变对象13[0]123[1][2][0][1][2]aba[1]=3a=b#会发生什么?a=[1,2,3]b=[1,2,3]a[1]=3#会发生什么?14列表方法方法说明list.append(x)将元素x添加至列表尾部list.extend(L)将列表L中所有元素添加至列表尾部list.insert(index,x)在列表指定位置index处添加元素xlist.remove(x)在列表中删除首次出现的制定元素list.pop([index])删除并返回列表对象指定位置的元素list.clear()删除列表中所有元素,但保留列表对象list.index(x)返回值为x的首个元素的下标list.count(x)返回指定元素x在列表中的出现次数list.reverse()对列表元素进行原地倒序list.sort()对列表元素进行原地排序(升序、降序)list.copy()返回列表对象的浅拷贝列表方法均不会改变列表的id。也不会新建列表,list.copy()除外。15列表方法list.copy()——浅拷贝拷贝:产生一个副本。16[0]123[1][2]a[0][1][2]bb[1]=4#a不受影响c=a#会发生什么?a=[1,2,3]c[1]=3#会发生什么?4b=a.copy()c17拷贝——制造完整的副本a=[[1,2,3],[4,5,6]]b=a.copy()18a[0][1][0][1][2]123456[0][1][2]b[0][1][0][1][2][0][1][2]浅拷贝——只拷贝一层#修改列表b的元素影响了列表a#修改列表a的元素影响了列表ba[0][1][0][1][2]123456[0][1][2]b[0][1]19创建列表(2)内置函数list(.):将根据作为参数的元组、range对象、字符串或其他类型的可迭代对象类型的数据新建一个列表。a_list=list((3,5,7,9,11))#(3,5,7,9,11)是一个元组a_list[3,5,7,9,11]list(range(1,10,2))#range(1,10,2)是一个range对象[1,3,5,7,9]list(‘helloworld’)#‘helloworld’是一个字符串['h','e','l','l','o','','w','o','r','l','d']x=list()#创建空列表x[]20range()函数该函数语法为range([start,]stop[,step])该函数返回一个range可迭代对象。range()的3个参数第一个参数表示起始值(默认为0)第二个参数表示终止值(结果中不包括这个值)第三个参数表示步长(默认为1)21课堂练习分别创建如下列表:0~100之间的偶数(升序)0~100之间的偶数(降序)1~200之间3的倍数(升序)1~200之间3的倍数(降序)-100~100之间的每个整数(升序)-100~100之间的每个整数(降序)在屏幕显示上述列表以检查是否正确。22用range()构造一个列表的下标范围已知列表list,其长度L=len(list)正向索引(下标均为非负)下标范围:range(L)逆序下标范围:range(L-1,-1,-1)奇数下标范围:range(1,L,2)偶数下标范围:range(0,L,2)逆向索引(下标均为负数)下标范围:range(-1,-L-1,-1)逆序下标范围:range(-L,0)奇数下标范围:range(-1,-L-1,-2)偶数下标范围:range(-2,-L-1,-2)23课堂练习:逐行显示列表的各元素课堂练习:逐行显示列表的各元素25for循环语法for变量in序列或迭代对象:循环体或for变量in序列或迭代对象:循环体else:else子句for循环流程(1)forxinsequence:循环体indexlen(sequence)循环体(使用x)TrueFalseindex=0index=index+11.index表示内部隐含变量,灰色框表示内部隐含操作;2.每次比较时都是重新计算len(sequence);3.x可以是任意合法变量名。x=sequence[index]删除列表当不再使用时,使用del命令删除整个列表。delalist#或者del(alist)alistTraceback(mostrecentcalllast):Filepyshell#6,line1,inmodulealistNameError:name'alist'isnotdefined删除列表对象alist之后,该对象就不存在了,再次访问时将抛出异常“NameError”提示访问的对象名不存在。28删除列表元素del命令原地删除列表中的指定位置上的元素。del命令也可以直接删除整个列表。alist=[3,5,7,9,11]delalist[1]#或者del(alist[1]),不能del(5)alist[3,7,9,11]delalist#或者del(alist)29删除列表元素列表的pop(.)方法原地删除并返回指定位置上的元素。pop()方法默认删除最后一个元素。如果给定的索引超出了列表的范围则抛出异常。a_list=list((3,5,7,9,11))a_list.pop()11a_list[3,5,7,9]a_list.pop(1)5a_list[3,7,9]30删除列表元素列表对象的remove(.)方法原地删除首次出现的指定值元素如果列表中不存在要删除的元素,则抛出异常。a_list=[3,5,7,9,7,11]a_list.remove(7)a_list[3,5,9,7,11]31例:删除列表中所有具有某指定值的元素(1)32例:删除列表中所有具有某指定值的元素(2)33例:删除列表中所有具有某指定值的元素(2)34例:删除列表中所有具有某指定值的元素(3)35例:删除列表中所有具有某指定值的元素(4)36例:删除列表中所有具有某指定值的元素(5)37切片列表元素计数列表对象的count(.)方法统计指定元素在列表对象中出现的次数,返回0表示不存在。aList[3,4,5,5.5,7,9,11,13,15,17]aList.count(7)1aList.count(0)0aList.count(8)038例:删除列表中所有具有某指定值的元素(6)39例:删除列表中所有具有某指定值的元素(7)40查找列表元素列表对象的index(.)方法获取指定元素首次出现的下标aList[3,4,5,5.5,7,9,11,13,15,17]aList.index(7)#元素值第一次为7时的下标4若列表对象中不存在指定元素,则抛出异常aList.index(100)Traceback(mostrecentcalllast):Filepyshell#36,line1,inmoduleaList.index(100)ValueError:100isnotinlist41增加列表元素++本质上把两个列表合并,创建一个新列表。由于速度较慢,在涉及大量元素添加时不建议使用该方法。42增加列表元素列表对象的append(.)方法,原地修改列表。真正意义上的在列表尾部添加元素,速度较快,也是推荐使用的方法。43append()不会新建列表44345aList[0]aList[1]aList[2]aListaList=[3,4,5]aList.append(7)aList.append(3)7aList[3]aList[4]aList[0]=6645增加列表元素aList=[5,2,4]aList.extend([7,8,9])aList[5,2,4,7,8,9]id(aList)25289752aList.extend([11,13])列表对象的extend(.)方法可以将另一个迭代对象的所有元素添加至该列表对象尾部。通过extend()方法来增加列表元素不改变其内存首地址,属于原地操作。aList[5,2,4,7,8,9,11,13]aList.extend((15,17))aList[5,2,4,7,8,9,11,13,15,17]id(aLi
本文标题:第2章+Python序列
链接地址:https://www.777doc.com/doc-4013278 .html