版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章
容器数据类型python程序设计基础教程3.1概述容器:每一个数据都包含多个数据元素,称为成员。按照特性分为:序列类型、映射类型和集合类型。类型标记特点示例序列“”、[]、()数据元素之间有先后关系s='Iamok!‘L=['a','b','c','d',3,4]season=('春','夏','秋','冬')映射{Key:value…}元素由key和value成对组成,字典中key不重复dict={'姓名':'张三','年龄':'20'}集合{}元素无序且不重复set={1,3,5}容器类型数据:字符串,列表,元组,字典,集合。3.2序列的操作序列:一组数据元素之间有先后关系,通过索引(下标)访问Python的序列。常见序列类型:字符串、列表和元组。类型标记值示例值类型字符串(str)‘‘或“”'cczu',"Python"不可变类型列表(list)[][10,20,[1,4],50]可变类型元组(tuple)()(10,(2,3,4),50)不可变类型字符串:由若干字符构成,两端用英文单引号或双引号标记;列表:成员可以是各种数据类型数据,两端用“[]”标记;元组与列表类似,但两端用“()”标记,并且属于不可变类型。3.2.1、常用的序列操作3.2.2、常用的序列函数和方法3.2序列的操作3.2.1序列的操作-常用序列操作常用的序列操作:功能操作创建[1,2,3],(1,2,3),"helloworld"序列的索引seq[i]序列的切片seq[startindex:remainindex:stepvalue]是否序列成员elemin/notinseq连接合并seq1+seq2,.join,extend序列的重复seq*n3.2序列的操作(1)序列的操作-创建序列的创建通过对变量直接赋值来创建该序列类型。>>>list1=[1,2,3] ##创建了一个列表类型对象list1>>>str1="helloworld" ##创建了一个字符串类型对象str1>>>tuple1=(10,32,20,16) ##创建了一个元组类型对象tuple13.2序列的操作(2)序列的操作-索引索引:指序列中元素的下标。格式为:seq[i]正向索引i:0,1,2,3……n-1反向索引i:-n,-(n-1),……-3,-2,-13.2序列的操作序列的索引:正向,反向>>>season=('春','夏','秋','冬')>>>season('春','夏','秋','冬')season'春''夏''秋''冬'正向索引0123反向索引-4-3-2-1>>>season[3]‘冬’>>>season[-1]'冬’>>>season[0]'春'>>>season[-4]‘春'3.2序列的操作(2)序列的操作-索引>>>L=[10,11,12,13,14,15,16,17,18]>>>L[0]#L[-9]10>>>L[-1]#L[8]18>>>L[3]]#L[-6]13>>>L[-3]#L[6]163.2序列的操作(3)序列的操作-切片切片:访问一定范围内的元素格式为:seq[startindex:remainindex:stepvalue]即:seq[起始下标:终止下标:步长],终止下标不包含startindex和remainindex:可选,默认0~-1startindex:开始的索引位置remainindex:结束+1的索引位置操作取到该索引前一个数为止,不包含该索引值stepvalue(步长):默认是1,即逐个切取步长为正数时,表示从左向右取如果为负数,表示从右向左取,如-1为倒着取步长不能为03.2序列的操作(3)序列的操作-切片>>>L=['a','b','c','d','e','f']
>>>L[0:3][‘a’,’b’,’c’]>>>L[2:-1:2]['c','e']3.2序列的操作(3)序列的操作-切片>>>L=[10,11,12,13,14,15,16,17,18]>>>L[:]#取所有元素L,L[::]
,L[0:],L[0:len(L)][10,11,12,13,14,15,16,17,18]>>>L[::-1]#等价于L[-len(L)::-1][18,17,16,15,14,13,12,11,10]步长省略时默认是1步长>0时,省略起始下标默认是0,省略终止下标默认到最后一个元素步长<0时,省略起始下标默认是最后一个元素,
省略终止下标默认到0位置元素3.2序列的操作>>>L=['a','b','c','d','e','f']#L是个列表>>>L[0:-1:2]#遍历所有元素,每隔两个取一个[‘a’,’c’,’e’]>>>L[::2]#
同L[0:len(L):2]['a','c','e']>>>L[0::2]#
同L[0:len(L):2]['a','c','e']>>>L[:2]#从第0位始,取第0,1位,省略步长['a','b']>>>L[-2:]#倒数2位到结束['e','f']>>>L[1:3]#取第1,2位['b','c']>>>L[1]#取第1位,不是切片‘b'>>>L[-2]#取倒数第2位,不是切片'e'(3)序列的操作-切片3.2序列的操作(3)序列的操作-切片-增加元素使用切片为列表增加元素>>>La=[3,5,7]>>>La[len(La):][]>>>a=List[len(La):]=[9]#在列表尾部增加元素>>>La[:0]=[1,2]#在列表头部插入多个元素>>>La[3:3]=[4]#在列表中间位置插入元素>>>La[1,2,3,4,5,7,9]3.2序列的操作序列的操作-关系操作in/notin关系运算符in/notin:对象是否是序列成员格式为:elemin/notinseqseq是字符串:判断是否成员;判断是否子串>>>s="helloworld">>>“x"ins##判断“h”字符是否是字符串序列s的成员,##结果为False>>>"world"ins##判断“world”字符串是否是字符串序列s的子串,##结果为True(4)3.2序列的操作(4)序列的操作-in/notin>>>L=[11,13,17,19]>>>12notinL##判断12是否是列表序列L的成员True>>>[11,13]inL##判断[11,13]是否是列表L的成员False>>>L=[[11,13],17,19]##判断[11,13]是否是列表L的成员>>>[11,13]inLTrueelemin/notinseqseq是列表或者元组:判断是否成员,不能判断子序列
3.2序列的操作(4)序列的操作-in/notin>>>t=(1,2,3)>>>3int##判断3是否是元组序列t的成员True>>>(2,3)int##判断(2,3)是否是元组序列t的成员False>>>5notintTrueelemin/notinseqseq是列表或者元组:判断是否成员,不能判断子序列
3.2序列的操作(5)序列的操作-连接合并1+>>>“Hello”+“World”#字符串'HelloWorld‘>>>[1,2,3]+[2,3,4]#列表[1,2,3,2,3,4]>>>(1,2)+(‘a’,‘b’,‘c’)#元组(1,2,'a','b','c')连接合并操作1:seq1+seq2适合于各种序列对象3.2序列的操作(5)序列的操作-连接合并2.join适合于字符串:连接合并操作2:joinchar.join(stringlist)>>>"".join(['wel','come'])'welcome'>>>"".join(["Hello","World"])'HelloWorld'>>>"*".join(["Happy","New","Year"])'Happy*New*Year'3.2序列的操作(5)序列的操作-连接合并3适用于列表连接合并操作3:list1.extend(list2)>>>L1=[1,2,3]>>>L1.extend([2,3,4])>>>L1[1,2,3,2,3,4]>>>L1.extend('123')>>>L1[1,2,3,2,3,4,'1','2','3']>>>L1.extend((1,2,3))>>>L1[1,2,3,2,3,4,'1','2','3‘,1,2,3]3.2序列的操作(6)序列的操作-重复重复操作:将序列重复多次,生成新序列格式:seq*n>>>s="hello">>>s*3'hellohellohello'>>>L=[1,2]>>>L*4[1,2,1,2,1,2,1,2]>>>T=(1,2,3)>>>T*2(1,2,3,1,2,3)3.2序列的操作3.2.2序列的操作-函数和方法格式含义len(seq)求序列中的元素个数max(seq,key=func)按要求求序列最大值min(seq,key=func)按要求求序列最小值sum(seq)求序列元素之和s.index(elem,x,y)根据序列元素找到位置s.count(elem,x,y)计算序列元素在序列中出现的次数sorted(seq)序列排序,不改变原序列
s.sort(key=func)序列排序,改变原序列
del(seq)删除序列3.2序列的操作(1)序列的操作-求长获取长度len(seq)##创建了一个列表类型对象list_example>>>list1=[1,[1,2,3],'a',(1,2),4]
>>>list1[1,[1,2,3],'a',(1,2),4]>>>len(list1)53.2序列的操作(2)序列的操作-函数max最大值函数max:求序列最大值。格式:max(seq,key=func)序列元素是数值:直接比较大小。序列元素是字符、中文汉字:依次比较Unicode。序列元素是序列:依次比较序列中的每一个值序列元素是逻辑值:返回第一个最大值,True或者1key参数指定比较依据。3.2序列的操作(2)序列的操作-函数max序列元素是数值:直接比较大小。序列元素是字符、中文汉字:比较ASCII。>>>max([10,39,34,26,30])#比较大小39>>>s=“HelloWorld”#比较Unicode码>>>max(s)‘r'>>>ord('我')25105>>>ord('们')20204>>>max('我们')#比较Unicode码'我'3.2序列的操作(2)序列的操作-函数max最大值函数max:求序列最大值。格式:max(seq,key=func)序列元素是序列:依次比较序列中的每一个值序列元素是逻辑值:返回第一个最大值,True或者1>>>max([10,20],[20,30],[10,20,30])[20,30]>>>max(1,True,False)1>>>max(True,1,False)True3.2序列的操作(2)序列的操作-函数max最大值函数max:max(seq,key=func)通过key参数可以指定比较依据。常使用lambda函数。>>>L=[[1,2],"abcdef",(10,20,30)]>>>max(L,key=lambdaitem:len(item))##按L中的每个序列元素中的元素个数排序##结果为'abcdef’>>>L=[('a',20),('b',30),('c',15)]>>>max(L,key=lambdaitem:len(item))#比较各序列长度('a',20)>>>max(L,key=lambdaitem:item[0])#比较各序列第一项('c',15)>>>max(L,key=lambdaitem:item[1])#比较各序列第二项('b',30)3.2序列的操作(3)序列的操作-min函数最小值函数min:min(seq,key=func)使用方法与max类似>>>min([10,39,34,26,30])10>>>s=“HelloWorld”>>>min(s)‘H'>>>min([10,20],[20,30],[10,20,30])[10,20]>>>min(1,True,False)False>>>min(True,0,False)0>>>L=[("a",20),("b",30),("c",15)]>>>min(L,key=lambdaitem:item[1])('c',15)3.2序列的操作(4)序列的操作-sum函数求和函数sum:求序列元素之和。格式:sum(seq)序列元素只能是可求和类型,如数值型和逻辑型。>>>sum([1.0,2.5,3.0])6.5>>>sum((1,True))23.2序列的操作(5)序列的操作-匹配方法index匹配方法:根据序列元素找到位置。找不到报错。seq.index(elem,startindex,remainindex)缺省起始位置默认为0,缺省终止位置默认到最后一个。remainindex位置不包含。>>>s="helloworld">>>s.index(“o”)#从0位置匹配4>>>s.index(“l”,5)#从5位置匹配9>>>s.index(“or”)#从0置匹配子序列7>>>L=[10,20,30]>>>L.index(20)13.2序列的操作(6)序列的操作-统计方法count统计次数方法count:计算序列元素在序列中出现的次数。字符串序列可统计子串次数。格式:seq.count(elem,startindex,remainindex)>>>s="helloworld.helloeveryone.">>>s.count("o")4>>>L=[1,2,3,2,2,3]>>>L.count(2)33.2序列的操作(6)序列的操作-统计方法count>>>s="helloworld.helloeveryone.">>>s.count("o”,0,20)#0:203>>>s=“helloworld.helloeveryone.“#统计子串>>>s.count("hello")2统计次数方法count:计算序列元素在序列中出现的次数。字符串序列可统计子串次数。格式:seq.count(elem,startindex,remainindex)remainindex位置不包含。3.2序列的操作(7)序列的操作-排序函数sorted>>>L=[12,34,20,19]>>>sorted(L)[12,19,20,34]>>>L#L本身不受影响[12,34,20,19]>>>sorted(L,reverse=True)[34,20,19,12]排序函数sorted:返回有序序列,原序列不变。格式:sorted(seq,key=func,reverse=False)默认reverse=False,升序排列。当reverse=True时,降序排列。>>>s="hello">>>sorted(s)['e','h','l','l','o']>>>T=(2,4,0,9)>>>sorted(T)[0,2,4,9]3.2序列的操作(7)序列的操作-排序函数sorted排序函数sorted:sorted(seq,key=func,reverse=False)通过key参数,可以指定依据排序。默认升序。>>>L=[(12,34),(20,12),(1,10),(12,30),(12,37)]>>>sorted(L)[(1,10),(12,30),(12,34),(12,37),(20,12)]>>>sorted(L,key=lambdaitem:item[1])[(1,10),(20,12),(12,30),(12,34),(12,37)]>>>L#L不受影响[(12,34),(20,12),(1,10),(12,30),(12,37)]3.2序列的操作(7)排序方法sort排序方法sort:在原序列上,将序列排成有序序列。格式:seq.sort(key=func,reverse=False)>>>L=[12,34,20,19]>>>L.sort()>>>L [12,19,20,34]#结果直接修改了原序列>>>L=[("a",20),("b",32),("c",24)]>>>L.sort(key=lambdaitem:item[1])>>>L[('a',20),('c',24),('b',32)]3.2序列的操作序列的操作-sorted函数与sort方法比较:>>>L=[12,34,20,19]>>>sorted(L) [12,19,20,34]>>>L [12,34,20,19]
#原序列未发生改变排序sorted函数与sort方法的区别:sorted函数返回排序后的结果,但原序列不变;sort方法直接改变原序列的次序进行排序。可变序列(列表)才有sort方法>>>L.sort()>>>L [12,19,20,34]#结果直接修改了原序列>>>s=['21','4','35']>>>s.sort()>>>s['21','35','4']3.2序列的操作(8)序列的操作-删除del>>>s=(1,2)>>>s(1,2)>>>dels>>>sTraceback(mostrecentcalllast):File"<pyshell#9>",line1,in<module>sNameError:name's'isnotdefined删除序列del,原序列不再存在。格式:delseq或del(seq)删除后再访问序列,则系统报错。>>>s='2345'>>>s'2345'>>>del(s)>>>s报错3.2序列的操作(9)序列类型转换>>>a=[1,2,'3','4']>>>b=tuple(a)>>>b(1,2,'3','4')>>>c=str(b)>>>c"(1,2,'3’,'4')“>>>d=list(b)>>>d[1,2,'3','4']3.2序列的操作字符串是一个字符序列,可以通过两端加单引号(‘)、双引号(“)、三个单引号('''…''')或三个双引号("""…""")来创建。示例:‘welcome’“Python123.io”单引号、双引号、三单引号、三双引号还可以互相嵌套,用来表示复杂的字符串。字符串属于不可变类型,因此无法直接修改字符串中的某个或某些成员;但可以通过切片连接等操作生成新的字符串。3.3字符串字符串示例'0123456789''abcdefg'''常州大学怀德学院''''123+456''''Let'sgotoschool'''''Jacksays:''Let'sgotoschool'''''''或''''或''''''表示空字符串3.3字符串3.3.1字符串基本操作
(1)创建通过赋值语句即可创建一个字符串类型的序列>>>s="" ##创建一个空字符串s>>>s="helloworld“##创建一个内容为"helloworld"的字符串s>>>type(s) ##查看s的类型<class'str'>3.3字符串(2)字符串基本操作-连接和重复字符串可以使用+运算符进行合并以生成新字符串,或者用*运算符进行重复。>>>print('Aa'+'Bb'+'Cc')AaBbCc>>>print('Abc'*5)AbcAbcAbcAbcAbc3.3字符串3.3.1字符串基本操作(3)字符串-文本块通过单引号或双引号可以标记单行字符串;通过三个单引号(或双引号)可以标记多行内容构成的(块、段)字符串。>>>s='''Pythonisaprogramminglanguage.Ilikeit.'''>>>print(s)Pythonisaprogramminglanguage.Ilikeit.>>>s#与print(s)对比'Pythonisaprogramminglanguage.\nIlikeit.'3.3字符串3.3.1字符串基本操作(4)字符串-转义字符>>>s='What'sthis?It'sabook.'SyntaxError:invalidsyntax>>>s='What\'sthis?\nIt\'sabook.'>>>print(s)What'sthis?It'sabook.反斜杠(“\”)为转义字符,通常读取字符串内容时,若读到“\”,则继续读取下一个字符,以获取特殊含义。如:“\n”表示换行符,“\\”表示反斜杠字符本身。3.3字符串3.3.1字符串基本操作(4)字符串-转义字符转义字符意义ASCII码值(十进制)\a响铃7\b回退8\f换页符12\n换行符10\r回车符13\t水平制表符9\v垂直制表符11\\反斜线字符92\'单引号字符39\"双引号字符34\?问号字符63\0空字符(NULL)03.3字符串3.3.1字符串基本操作字符串-转义字符使用说明(2)如果不需要反斜杠发生转义,可以在字符串前面添加字母r或R表示原始字符串,但字符串的最后一个字符不能是反斜杠符号。>>>print(r"d:\computer\note")d:\computer\note(1)单引号括住的字符串里面又有单引号时,就必须使用转义字符。如:str='They\'restudents.'(3)反斜杠可以作为续行符,表示下一行是上一行的延续。>>>print("ThisisaPython\Program.")ThisisaPythonProgram.3.3字符串字符串-转义字符示例print('{@}{@}{@}')print('|||')print(r'\|/\|/\|/')print('|||')print('|||')print('{@}{@}{@}\n\|||\n\\\|/\\|/\\|/\n\|||\n\|||')3.3字符串(5)字符串-”修改”(切片生成)字符串是不可修改类型,不可直接修改字符串中的字符元素。若需插入或删除某元素,则可通过切片连接的方式生成新的字符串再赋值给原对象。>>>s="helloworld">>>s=s[:5]+“”+s[-5:]##在s中的"hello"和"world"之间增加空格>>>s'helloworld'3.3字符串3.3.1字符串基本操作(6)字符串-比较大小字符串进行比较:按Unicode编码进行比较>>>"Python">"Language"True>>>ord('我')25105>>>ord('们')20204>>>
'我'>'们'True3.3字符串3.3.1字符串基本操作字符串常用函数格式含义str(obj)将其它类型的数据转换为字符串类型chr(n)将unicode编码转换为字符类型ord(ch)给定字符,获得unicode编码>>>n=123>>>str(n)'123'>>>chr(65)'A'>>>ord('A')653.3字符串3.3.2字符串常用函数3.3.2字符串常用函数>>>n=123>>>str(n)'123'转换函数str:将其它类型的数据转换为字符串类型。格式:str(obj)>>>L=[1,2,3]>>>str(L)'[1,2,3]'>>>b=True>>>str(b)'True'(1)转换字符串函数str3.3字符串(2)字符串-转换字符函数chr>>>chr(97)'a'>>>chr(98)'b'>>>chr(65)'A'>>>chr(48)'0'转换函数chr:将unicode编码转换为字符类型。格式:chr(n)>>>chr(2000)'ߐ'>>>chr(20034)'乂'>>>chr(100)'d‘>>>chr(40056)'鱸'3.3字符串(3)字符串-字符编码的函数ord>>>ord('a')97>>>ord('b')98>>>ord('A')65>>>ord('0')48函数ord:给定字符,获得unicode编码。格式:ord(ch)>>>ord('你')20320>>>ord('%')37>>>ord(‘?’)#英文的问号63>>>ord(‘?’)#中文的问号653113.3字符串3.3.3字符串常用方法字符串常用方法分类大、小写字母转换类连接分割类字符串搜索类字符串判断类删除字符类替换字符类3.3字符串字符串常用方法13.3字符串字符串常用方法23.3字符串字符串常用方法33.3字符串字符串常用方法43.3字符串(1)字符串-分离和合并方法split,join>>>s="Ihaveadream">>>s.split(“”)#按空格隔断['I','have','a','dream']split方法:根据指定的分隔符将字符串分离格式:str.split(splitchar)>>>s="12,23,34,10">>>s.split(“,”)#按逗号隔断['12','23','34','10']3.3字符串(1)字符串-分离和合并方法split,join.join方法和split方法互逆格式:joinchar.join(stringlist)>>>"".join(['wel','come'])'welcome'>>>"".join(["Hello","World"])'HelloWorld‘>>>“*".join(["Happy","New","Year"]) ##结果为'Happy*New*Year'3.3字符串(2)字符串-大小写转换-方法转换为大写:str.upper()>>>s="Ihaveadream">>>s.upper()##原字符串未改变'IHAVEADREAM'>>>s'Ihaveadream'将所有字母转换为大(小)写的方法转换为小写:str.lower()>>>s="Ihaveadream">>>s.lower()'ihaveadream'>>>s##原字符串未改变‘Ihaveadream’3.3字符串(3)字符串-判断是否大小写-方法>>>"HELLOWORLD".isupper()True>>>"HAPPY2018".isupper()True>>>"HelloWorld".islower()False判断字符串中字母是否均为大(小)写字母的方法判断是否均为大写字母:str.isupper()判断是否均为小写字母:str.islower()3.3字符串(4)字符串-字符串是否数字-方法判断字符串是否均由数字构成的方法:str.isnumeric()>>>"2018".isnumeric() ##结果为True>>>"happy2018".isnumeric() ##结果为False3.3字符串(5)字符串-替换字串-方法.replace替换方法replace:源串中的子串换成指定子串。
格式:str.replace(old,new[,count])#count指换几处>>>s="Ihaveadream">>>s.replace(“”,“,”)##,替换空格'I,have,a,dream‘>>>s.replace(“”,“,”,2)##只替换前两个'I,have,adream‘>>>s##原字符串未改变'Ihaveadream‘3.3字符串(6)查找字符串位置-匹配方法find>>>s="helloworld">>>s.find(“ll0")2>>>s.index(“ll")2匹配方法:根据字符串序列元素找位置,找不到返-1.seq.find(elem,startindex,remainindex)缺省起始位置默认为0,缺省终止位置默认到最后一个。只能用于字符串3.3字符串字符串查找方法index和find比较匹配方法:根据字符串序列元素找位置。格式1:seq.index(elem,startindex,remainindex)格式2:seq.find(elem,startindex,remainindex)匹配方法index与find区别:字符串、列表及元组三者均有index方法;字符串类型的序列有find方法,列表及元组无find方法;若源字符串中无待查找之子串,使用index方法时抛出异常,并给出错误提示;若源字符串中无待查找之子串,使用find方法时返回-1,表示找不到子串。3.3字符串字符串查找方法index和find比较示例:>>>s="helloworld“>>>s.find('o')4>>>s.index('o')4>>>s.find('t')-1>>>s.index('t')Traceback(mostrecentcalllast):File"<pyshell#2>",line1,in<module>s.index('t')ValueError:substringnotfound若源字符串中无待查找之子串,使用index方法时抛出异常,并给出错误提示;若源字符串中无待查找之子串,使用find方法时返回-1,表示找不到子串。3.3字符串示例:>>>list1=[1,2,3,4,5]>>>list1.find(2)Traceback(mostrecentcalllast):File"<pyshell#6>",line1,in<module>list1.find(2)AttributeError:'list'objecthasnoattribute'find'>>>list1.index(2)1>>>t=(1,2,3,4,5)>>>t.find(2)Traceback(mostrecentcalllast):File"<pyshell#9>",line1,in<module>t.find(2)AttributeError:'tuple'objecthasnoattribute'find'>>>t.index(2)1字符串、列表及元组三者均有index方法;字符串类型的序列有find方法,列表及元组无find方法;3.3字符串3.3.4格式化输出print函数有两种格式化方法支持格式化输出1.格式化操作符%2.format函数>>>print("%d+%d=%d"%(2,3,2+3))##%2+3=5>>>print("{0}的大学计算机基础成绩为{1}分".format("李四",90))李四的大学计算机基础成绩为90分3.3字符串(1)格式化输出-操作符%格式化操作格式化操作符%:spec%value格式说明符含义'd'、'i'十进制整数'o'八进制值'x‘'X'十六进制(小写)(大写)'e‘'E'浮点数表示法(小写)(大写)'f'、'F'十进制浮点数'c'单个字符(接受整数或字符串)'r'字符串(使用
repr()转换任何Python对象)'s'字符串(使用
str()转换任何Python对象)3.3字符串(1)格式化输出-操作符%1.用“%字符”格式化输出语法格式如下:print("格式化文本"%(变量1,变量2,…变量n))说明:(1)格式化文本可以用“%字符”代表输出格式。(2)多个变量时,变量须用括号括起来,之间用逗号隔开。(3)输出可固定打印字符的个数和浮点数的位数,让输出的数据排列整齐。3.3字符串>>>age=19>>>print("Jack的年龄:",age+3,"岁")Jack的年龄:22岁>>>print("Jack的年龄:%d岁"%(age+3))Jack的年龄:22岁>>>"%o"%10#10按八进制输出'12'>>>“%e”%123.456#按指数形式输出'1.234560e+02'(1)格式化文本可以用“%字符”代表输出格式。>>>“%10s”%“hello”#设置输出宽度'hello’>>>“%2s”%“hello“#宽度不够,原样输出'hello’>>>"%-10s"%"hello"'hello‘(1)格式化文本可以用“%字符”代表输出格式。格式含义%nd右对齐n位输出,宽度不够则原样输出,超出部分填空格
%-nd左对齐n位输出,宽度不够则原样输出3.3字符串1)格式化文本可以用“%字符”代表输出格式。格式含义%m.nf宽度位m,小数点后输出n位%0nd右对齐n位输出,宽度不够则原样输出,超出部分填0%-nd左对齐n位输出,宽度不够则原样输出%%输出%>>>print(‘***%7.2f'%3.14159)***3.14>>>print("%-7.2f***"%3.14159)3.14***>>>len("%7.2f"%3.234) 7>>>float1=0.0367853>>>"%f百分数并保留两位小数:%.2f%%"%(float1,float1*100)'0.036785百分数并保留两位小数:3.68%'>>>"%09d"%2022'000002022‘>>>print("%08.1f"%3.234)'000003.2'3.3字符串2)多个变量时,变量须用括号括起来,之间用逗号隔开。示例:>>>age=18>>>print("%s的年龄:%d岁"%("Lucy",age))Lucy的年龄:18岁>>>print("%d+%d=%d"%(2,3,2+3))2+3=53.3字符串示例:print("%6s的2月份工资:%8.2f元"%("Tom",6580))print("%6s的2月份工资:%8.2f元"%("Marry",5658.3))print("%6s的2月份工资:%8.2f元"%("Jone",10012.18))执行结果:说明:%6s表示字符串的宽度为6,右对齐。%8.2f表示浮点数的宽度为8,小数占2位,小数点占1位,右对齐。
3)输出可固定打印字符的个数和浮点数的位数,让输出的数据排列整齐。3.3字符串(2)格式化输出-搭配format函数格式化操作format方法:spec.format(value)用法说明:(1)格式用大括号{}或{数字编号}表示,{}内用format函数里的自变量替换。(2)可以使用多个自变量。(3)在数字编号后面加上冒号可以指定参数格式。(4)可以搭配“<”、“^”、“>”加上宽度来控制左、中、右输出对齐。3.3字符串(1)格式用大括号{}或{数字编号}表示,{}内用format函数里的自变量替换。示例:>>>print("{}是我们的计算机老师。".format("张三"))张三是我们的计算机老师。示例:>>>print("{0}是我们的计算机老师。".format("张三"))张三是我们的计算机老师。3.3字符串(2)可以使用多个自变量{0}表示使用第一个自变量,{1}表示使用第二个自变量,以此类推。可以用format函数里面的自变量名称取代数字编号。如果{}内省略,则按照自变量的顺序填入。示例:>>>print("{}的大学计算机基础成绩为{}分".format("李四",90))>>>print("{0}的大学计算机基础成绩为{1}分".format("李四",90))>>>print(“{1}的大学计算机基础成绩为{0}分”.format(90,"李四"))>>>print("{name}的大学计算机基础成绩为{score}分".format(name="李四",score=90))执行结果均为:李四的大学计算机基础成绩为90分3.3字符串示例:>>>print("{0:.2f}".format(3.1415926))#取2位小数3.14>>>print("{0:.2f}{0:.4f}{0:.6f}".format(3.1415926))3.143.14163.141593>>>print("{0:12.2f}{0:12.4f}{0:12.6f}".format(3.1415926))3.143.14163.141593>>>"{:+10.2f}".format(1234.5698)'+1234.57’>>>"{:+10.2f}".format(-1234.5698)'-1234.57'(3)在数字编号后面加上冒号:可以指定参数格式。加数字m.n,m表示总宽度(左对齐),n表示小数位数。加”f”可以设置浮点数格式。加”+”可以输出正负号。3.3字符串示例:>>>"{:b}".format(10)'1010'>>>"{:o}".format(10)'12'>>>"{:x}".format(10)'a'>>>"{:X}".format(10)'A'>>>"{:#b}".format(10)'0b1010'通过格式符“b”、“o”、“x”可以设置输出的进制形式。添加“#”显示进制标记。通过格式符“e”、“E”可以设置科学计数法形式。通过格式符“%”可以将参数的输出形式设置为百分数。示例:>>>"{:e}".format(1234.5678)'1.234568e+03‘>>>"{:.4e}".format(1234.5678)'1.2346e+03‘>>>"{:.4E}".format(1234.5678)'1.2346E+03'示例:>>>"{:%}".format(0.123456)'12.345600%'>>>"{:.2%}".format(0.123456)'12.35%'3.3字符串(4)可以搭配“<”、“^”、“>”加上宽度来控制左、中、右输出对齐。“=”表示数值的符号与数值两端对齐。未指定填充字符则默认是以空格填充.指定填充字符则以指定字符作为填充。>>>"{:>10}".format("hello")'hello'>>>"{:<10}".format("hello")'hello'>>>"{:^10}".format("hello")'hello'>>>"{:*^10}".format("hello")'**hello***'>>>"{:=6}".format(-206)'-206'>>>"{:0=6}".format(-206)'-00206'3.3字符串搭配“<”、“^”、“>”加上宽度来控制左、中、右输出对齐。未指定填充字符则默认是以空格填充.指定填充字符则以指定字符作为填充。执行结果:示例:print(“{0:6}的期末总分为:{1:<9}".format("Billy",621))print("{0:6}的期末总分为:{1:#^9}".format("Sue",598))print("{0:6}的期末总分为:{1:@>9}".format("May",652))3.3字符串标准库string模块(了解)标准库string模块提供了一些字符串相关的常量和函数。使用前先导入:importstring常量:返回返回ASCII字符集中的各类字符串。函数返回的字符串string.whitespace返回所有空白符构成的字符串string.punctuation返回所有标点符号构成的字符串string.printable返回所有可打印字符构成的字符串string.ascii_lowercase返回所有小写字母构成的字符串string.ascii_uppercase返回所有大写字母构成的字符串string.ascii_letters返回所有字母构成的字符串string.digits返回所有十进制数字构成的字符串string.hexdigits返回所有八进制数字构成的字符串string.octdigits返回所有十六进制数字构成的字符串3.3字符串string.punctuation:返回所有标点符号构成的字符串。>>>string.punctuation'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'string.whitespace:返回所有空白符构成的字符串。包括:回车符,制表符,换行符等。>>>string.whitespace‘\t\n\r\x0b\x0c‘#x0b竖直制表符x0c换页string.printable:返回所有可打印字符构成的字符串。>>>string.printable'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~\t\n\r\x0b\x0c'3.3字符串string.ascii_letters:返回所有字母构成的字符串。>>>string.ascii_letters'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'string.ascii_lowercase:返回所有小写字母构成的字符串。>>>string.ascii_lowercase'abcdefghijklmnopqrstuvwxyz'string.ascii_uppercase:返回所有大写字母构成的字符串。>>>string.ascii_uppercase'ABCDEFGHIJKLMNOPQRSTUVWXYZ'3.3字符串string.octdigits:返回所有八进制数字构成的字符串。>>>string.octdigits'01234567'string.digits:返回所有十进制数字构成的字符串。>>>string.digits'0123456789'string.hexdigits:返回所有十六进制数字构成的字符串。>>>string.hexdigits'0123456789abcdefABCDEF'3.3字符串列表是使用方括号[]括起来的一组数据序列的集合。列表是可修改的序列,其长度和内容都可变,可进行插删改操作。列表元素个数不需要预先定义列表元素的数据类型可以不一致列表属于序列,序列的操作符和函数对列表都有效List1=[1,2,’asdc’,3.14]3.4列表3.4.1列表的基本操作>>>x=[] #x为空列表>>>y=[’a’] #y为一个元素的列表>>>z=[’a’,’b’,’c’,[1,2,3],’d’]#z为嵌套的列表>>>m=[1,2,3,4,5,6,7,8,9,10]>>>p=m#p和m指向同一列表,p修改会导致m值修改,反之亦然>>>q=m[2:5]#q=[3,4,5],q为一个新列表,和m没关系>>>k=list(range(1,6))#k=[1,2,3,4,5](1)新建列表13.4列表通过生成序列函数range得到列表生成序列函数range:range(start,stop[,step])>>>list(range(10)) ##产生[0,9]之间的整型数值构成的序列[0,1,2,3,4,5,6,7,8,9]>>>list(range(10,20))##产生[10,19]之间的整型数值构成的序列[10,11,12,13,14,15,16,17,18,19]>>>list(range(1,20,3))##产生1+3i数值构成的<20的等差序列[1,4,7,10,13,16,19](1)新建列表23.4列表>>>m=[1,2,3,4,5]>>>m[4]=11#修改了一个元素m=[1,2,3,4,11]>>>n=['a','b']>>>m[2:3]=n#2个换1个>>>m[1,2,'a','b',4,11]>>>t=[7]>>>m[3:5]=t#1个换2个>>>m[1,2,‘a’,7,11](2)修改列表元素3.4列表3.4.2列表的常用函数函数描述list(seq)将字符串或元组序列转换成列表delL[m:n]删除列表元素m到n-1sorted(seq)排序函数,自身不变s.sort(seq)排序方法,自身改变3.4列表转换函数list>>>s="hello">>>list(s)['h','e','l','l','o']>>>s'hello'(1)转换函数list:将序列、字符串或元组序列转换成列表。格式:list(seq)>>>t=(10,20,30)>>>m=list(t)>>>m[10,20,30]>>>t(10,20,30)3.4列表列表操作-示例-sorted交互问题:s=[1,2,3,4,5,6,7,8,9,10]将s中偶数位的数从大到小排序之后,重新插入到偶数位置,即变为:s=[1,10,3,8,5,6,7,4,9,2]>>>s=list(range(1,11))>>>s[1,2,3,4,5,6,7,8,9,10]>>>m=s[1::2]#s1:取出偶数位的数字>>>m[2,4,6,8,10]>>>t=sorted(m,reverse=True)#s2:由大到小排列>>>t[10,8,6,4,2]>>>s[1::2]=t#s3:插回原列表>>>s[1,10,3,8,5,6,7,4,9,2]3.4列表列表操作-示例-sorted脚本初始:s=[1,2,3,4,5,6,7,8,9,10]变为:s=[1,10,3,8,5,6,7,4,9,2]示例:脚本文件:s=list(range(1,11))print(s)m=s[1::2]#s1:取出偶数位的数字t=sorted(m,reverse=True)#s2:由大到小排列s[1::2]=t#s3:插回原列表print(s)结果:[1,2,3,4,5,6,7,8,9,10][1,10,3,8,5,6,7,4,9,2]3.4列表列表操作-示例-方法二sort:交互问题:s=[1,2,3,4,5,6,7,8,9,10]将s中偶数位的数从大到小排序之后,重新插入到偶数位置,即变为:s=[1,10,3,8,5,6,7,4,9,2]>>>s=list(range(1,11))>>>s[1,2,3,4,5,6,7,8,9,10]>>>m=s[1::2]#s1:取出偶数位的数字>>>m[2,4,6,8,10]>>>m.sort(reverse=True)#s2:由大到小排列>>>m[10,8,6,4,2]>>>s[1::2]=m#s3:插回原列表>>>s[1,10,3,8,5,6,7,4,9,2]3.4列表列表操作-示例-方法二sort:脚本问题:s=[1,2,3,4,5,6,7,8,9,10]变为:s=[1,10,3,8,5,6,7,4,9,2]脚本文件:s=list(range(1,11))print(s)m=s[1::2]#s1:取出偶数位的数字m.sort(reverse=True)#s2:由大到小排列
s[1::2]=m#s3:插回原列表print(s)结果:[1,2,3,4,5,6,7,8,9,10][1,10,3,8,5,6,7,4,9,2]3.4列表删除列表元素delL[m:n]删除列表元素:delL(m:n)>>>L=list(range(10)) ##产生[0,9]之间的整型数值构成的列表>>>L[0,1,2,3,4,5,6,7,8,9]>>>delL[3:7]>>>L[0,1,2,7,8,9](2)3.4列表3.4.3列表常用方法方法描述s.append(obj)在列表s末尾添加新的对象objs.extend(t)在列表s末尾一次性追加另一个序列t中的多个值(用新列表扩展原来的列表)s=s+t或s+=ts.insert(index,obj)将对象obj插入列表s的第index元素所在处s.pop(obj=list[-1])移除列表s中的一个元素(默认最后一个元素),并且返回该元素的值s.remove(obj)移除列表s中某个值的第一个匹配项s.clear()清空s中所有元素s.reverse()将列表s中元素反转,就地逆置其它方法.sort.index.find.count3.4列表(1)列表追加方法append和扩展extend追加对象方法append:在列表末尾追加对象格式:list.append(object)扩展元素方法extend:在列表末尾扩展新元素格式:list.extend(t)>>>L=[1,2,3]>>>L.append(4)>>>L[1,2,3,4]>>>t=[1,2]>>>t[1,2]>>>>>>L.append(t)>>>L[1,2,3,4,[1,2]]#追加了一个子列表>>>L.extend(t)>>>L[1,2,3,[1,2],1,2]#扩展了两个元素3.4列表(2)列表插入方法insert插入对象方法insert:将对象插在指定位置上格式:list.insert(index,object)>>>L=[10,20,30,40]>>>L.insert(1,15)>>>L[10,15,20,30,40]>>>L.insert(1,[1,2])>>>L[10,[1,2],15,20,30,40]要点:L[1:1]=[15]替换语句L.insert(1,15)也可得到相同结果>>>L=[10,20,30,40]>>>L[1:1]=[15]#插入>>>L[10,15,20,30,40]>>>L[1]=‘abc’#对比:替换>>>L[10,'abc',20,30,40] 3.4列表(3)根据位置移除元素方法pop移除元素方法pop:根据元素位置移除元素格式:list.pop([index])与append方法互逆默认删除最后一个(-1)元素,位置不存在时报错>>>L=[12,23,34,45]>>>L.pop() ##移除最后一个元素45>>>L [12,23,34]>>>L.pop(0) ##移除1212>>>L [23,34]3.4列表(4)根据值移除元素方法remove移除元素方法remove:根据元素值移除元素格式:list1.remove(value)调用该方法一次只能删除第一个值为value的元素Value不存在时报错>>>L=[10,20,30,20,10]>>>L.remove(20)#删除第一个值20的元素>>>L [10,30,20,10]>>>L.remove(50)#报错Traceback(mostrecentcalllast):File"<pyshell#5>",line1,in<module>L.remove(50)ValueError:list.remove(x):xnotinlist3.4列表del,pop,remove的对比del:函数,
下标或切片方式操作,无返回值pop:方法,按下标操作,返回删除的数Remove:方法,按值操作,无返回值>>>L=list(range(0,100,10))>>>L[0,10,20,30,40,50,60,70,80,90]>>>delL[2]#删除第2个元素>>>L[0,10,30,40,50,60,70,80,90]>>>delL[7:]#删除第7-最后个元素>>>L[0,10,30,40,50,60,70]>>>L.pop()#删最后一个70>>>L[0,10,30,40,50,60]>>>L.pop(2)#删第2个30>>>L[0,10,40,50,60]>>>L.remove(40)#删值为40的元素>>>L[0,10,50,60]3.4列表(5)清空元素方法clear清空元素方法clear:清空列表格式:list1.clear()>>>L=[1,2,3,2,1]>>>L.clear()>>>L[]对比:del函数的功能是删除列表>>>L=[1,2,3,2,1]>>>del(L)>>>L出错3.4列表(6)列表元素就地逆转方法reverse反向方法reverse:将列表元素就地逆转格式:list.reverse()>>>L=[12,23,34,45,10]>>>L.reverse()>>>L[10,45,34,23,12]3.4列表元组是只读序列,用圆括号()括起,括号可省略元组不可改变,所以代码更安全列表为可变类型,元组为不可变类型序列的操作符和函数对元组都有效元组不能使用.append()、.insert()、.pop()、.sort()等动态方法,其他静态方法如.index()、.count()和列表是一样的T1=(1,2,’asd’,(5,6))3.5元组(1)元组的新建-赋值>>>a=() #a为空元组>>>b=(3,) #b为只包含一个元素的元组,逗号不能省>>>type(b)<class'tuple'>>>>c=(3)#对比:c是个变量,不是元组>>>c3>>>type(c)<class'int'>>>>animal=‘cat’,‘dog’,‘rabbit’,‘mouse’,‘horse‘#省略了()>>>animal('cat','dog','rabbit','mouse','horse')3.5元组(2)元组的新建-tuple函数>>>m=tuple(range(1,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 军事理论(河北政法职业学院)知到智慧树答案
- 冷库建设项目可研报告
- 橡胶制品有限公司轮胎翻新项目可研报告
- 锅炉烟气脱硫改造项目建设可行性研究报告
- 《人际传意技巧》课件
- 《社保基础知识》课件
- 《背部专业知识》课件
- (麦当劳餐饮运营管理资料)餐饮连锁运营管理360
- 2015年浙江温州中考满分作文《月亮离我有多远》7
- 安全培训资料:典型电厂误操作事故
- 1#玻璃合格证
- 机械常用材料及工艺性
- 时分的认识(课件)3
- 北京链家房地产房屋买卖合同(标准版)范本
- 国家中医药管理局“十一五”重点专科(专病)评估细则
- 基板铜箔半固化片检验标准书(共27页)
- 《解决问题(座位数够不够)》教学设计
- 气瓶安全检查要点与安全管理细则+17张常见气瓶隐患图详解
- 阿姨帮家庭保洁小时工O2O平台
- 管理学,罗宾斯,9版,教师手册robbins_fom9_im_01
- 河南暴雨参数计算表
评论
0/150
提交评论