




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章复合数据类型序列类型引言列表元组字符串通用操作文件Python支持组合数据类型,可以将一批数据作为一个整体进行数据操作,这就是数据容器的概念。序列是容器(集合)中包含多个数据(元素),容器中的数据(元素)有先后次序,通过下标(索引)进行访问。引言序列类型组合数据类型列表列表(list)是序列类型的一种,由0或多个有序排列的元素组成,序列所有的特性和操作对于列表都成立。列表的格式为:[元素,元素,……,元素]02使用方括号“[]”创建列表,可以是空列表或包含多个项的列表。直接创建使用简洁的语法创建列表,常用于创建空列表或包含单个元素的列表。列表解析式创建列表#创建一个空列表>>>a=[]#创建一个内置元素的列表>>>b=[2,3,5,7,11,13]#单变量列表解析>>>print([iforiinrange(6)])[0,1,2,3,4,5]#多变量列表解析>>>a=[[5*i,5*i+1,5*i+2,5*i+3,5*i+4]foriinrange(5)]>>>a[[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14],[15,16,17,18,19],[20,21,22,23,24]]将其他数据类型转换成列表,最多接收一个参数。使用`list()`函数逐个添加元素到列表末尾,是列表中元素的一种添加方式。用`append`方法创建列表>>>a=list('hello')>>>a['h','e','l','l','o']>>>b=list()>>>b[]>>>list(range(1,10,2))[1,3,5,7,9]lst=[]foriinrange(4): lst.append(input('请输入元素:'))print(lst)输出:请输入元素:1请输入元素:2请输入元素:3请输入元素:4['1','2','3','4']访问元素通过索引访问列表元素,索引从0开始,可以像访问字典中的值一样使用。修改元素类似访问元素的语法,通过索引修改列表元素的值,但无法直接删除或添加元素。添加元素使用`append`、`extend`、`insert`、使用`+`号等方法添加新元素。列表操作>>>names=['Lily','Lucy','May']>>>print(names[0])Lily>>>print(names[1])Lucy>>>print(names[2])May>>>a=[[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14],[15,16,17,18,19],[20,21,22,23,24]]>>>a[0][0]0>>>a[1][0]5>>>a[0][1]1>>>a[4][4]24访问元素通过索引访问列表元素,索引从0开始,可以像访问字典中的值一样使用。修改元素类似访问元素的语法,通过索引修改列表元素的值,但无法直接删除或添加元素。添加元素使用`append`、`extend`、`insert`、使用`+`号等方法添加新元素。列表操作>>>a=[1,3,5,7,11]>>>print(a)[1,3,5,7,11]>>>a[0]=2>>>print(a)[2,3,5,7,11]访问元素通过索引访问列表元素,索引从0开始,可以像访问字典中的值一样使用。修改元素类似访问元素的语法,通过索引修改列表元素的值,但无法直接删除或添加元素。添加元素使用`append`、`extend`、`insert`、使用`+`号等方法添加新元素。列表操作>>>names=['Lily','Lucy','May']>>>print(names)['Lily','Lucy','May']>>>names.append('Anna')>>>print(names)['Lily','Lucy','May','Anna']>>>a=[1,2]>>>b=[3,4]>>>c=[1,2]#追加新对象>>>a.append(b)>>>print(a)[1,2,[3,4]]#追加新元素序列>>>c.extend(b)>>>print(c)[1,2,3,4]访问元素通过索引访问列表元素,索引从0开始,可以像访问字典中的值一样使用。修改元素类似访问元素的语法,通过索引修改列表元素的值,但无法直接删除或添加元素。添加元素使用`append`、`extend`、`insert`、使用`+`号等方法添加新元素。列表操作>>>a=[1,2]>>>b={'Lily':20,'Lucy':22} #字典>>>c=[1,2]>>>a.extend(b)>>>print(a)[1,2,'Lily','Lucy']>>>c.append(b)>>>print(c)[1,2,{'Lily':20,'Lucy':22}]#把新元素Eda放到目前的第1位元素Lily之前>>>names=['Lily','Lucy','May']>>>names.insert(0,'Eda')>>>print(names)['Eda','Lily','Lucy','May']#把新元素Mia放到目前的第2位元素Lily之前>>>names.insert(1,'Mia')>>>print(names)['Eda','Mia','Lily','Lucy','May']访问元素通过索引访问列表元素,索引从0开始,可以像访问字典中的值一样使用。修改元素类似访问元素的语法,通过索引修改列表元素的值,但无法直接删除或添加元素。添加元素使用`append`、`extend`、`insert`、使用`+`号等方法添加新元素。列表操作#把新元素Eda放到目前的最后一个元素May之前>>>names=['Lily','Lucy','May']>>>names.insert(-1,'Eda')>>>print(names)['Lily','Lucy','Eda','May']#正索引值超过列表长度的有效范围>>>names=['Lily','Lucy','May']>>>names.insert(5,'Eda')>>>print(names)['Lily','Lucy','May','Eda']#负索引值超过列表长度的有效范围>>>names.insert(-5,'Eda')>>>print(names)['Mia','Lily','Lucy','May','Eda']>>>names=['Lily','Lucy','May']>>>names.insert(1.5,'Eda')TypeError:integerargumentexpected,gotfloat访问元素通过索引访问列表元素,索引从0开始,可以像访问字典中的值一样使用。修改元素类似访问元素的语法,通过索引修改列表元素的值,但无法直接删除或添加元素。添加元素使用`append`、`extend`、`insert`、使用`+`号等方法添加新元素。列表操作>>>a=[1,2]>>>c=[1,2]>>>b=a+c>>>print(b)[1,2,1,2]删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>names=['Lily','Lucy','May']>>>print(names)['Lily','Lucy','May']#使用正数索引>>>delnames[2]>>>print(names)['Lily','Lucy']#使用负数索引>>>delnames[-1]>>>print(names)['Lily']#删除整个列表>>>delnames>>>print(names)NameError:name'names'isnotdefined删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>names=['Mia','Lily','Lucy','May','Eda']>>>print(names)['Mia','Lily','Lucy','May','Eda']#使用正数索引,删去索引值为2的元素>>>delnames[2:3]>>>print(names)['Mia','Lily','May','Eda']#使用负数索引,删去索引值为-3、-2的元素>>>delnames[-3:-1]>>>print(names)['Mia','Eda']删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>names=['Mia','Lily','Lucy','May','Eda']>>>print(names)['Mia','Lily','Lucy','May','Eda']#使用正数索引,删去索引值为2的元素>>>delnames[2:3]>>>print(names)['Mia','Lily','May','Eda']#使用负数索引,删去索引值为-3、-2的元素>>>delnames[-3:-1]>>>print(names)['Mia','Eda']删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>names=['Mia','Lily','Lucy','May','Eda']>>>print(names)['Mia','Lily','Lucy','May','Eda']>>>names.pop(3)>>>print(names)['Mia','Lily','Lucy','Eda']>>>names.pop()>>>print(names)['Mia','Lily','Lucy']删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>names=['Mia','Lily','Lucy','Mia','Eda']>>>print(names)['Mia','Lily','Lucy','Mia','Eda']>>>names.remove('Mia')>>>print(names)['Lily','Lucy','Mia','Eda']>>>names.remove('Mia')>>>print(names)['Lily','Lucy','Eda']>>>names.remove('Mia')ValueError:list.remove(x):xnotinlist删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>names=['Mia','Lily','Lucy','May','Eda']>>>print(names)['Mia','Lily','Lucy','May','Eda']>>>names.clear()>>>print(names)[]删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作#例1>>>a=[1,2]>>>b=a>>>print('a=',a,'b=',b)a=[1,2]b=[1,2]>>>b[0]=-1>>>print('a=',a,'b=',b)a=[-1,2]b=[-1,2]#例2>>>a=[1,2]>>>c=a[:]>>>print('a=',a,'c=',c)a=[1,2]c=[1,2]>>>c[0]=-1>>>print('a=',a,'c=',c)a=[1,2]c=[-1,2]删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>l=[1,2,3,4,5,6]>>>l1=l[1:4:1] #取1,2,3>>>l1[2,3,4]>>>l2=l[-5:-1:1] #取-5,-4,-3,-2>>>l2[2,3,4,5]>>>l3=l[1:-1:1] #取除0,-1外的所有>>>l3[2,3,4,5]>>>l4=l[-5:5:1] #统一正负两种索引,后判断>>>l4[2,3,4,5]删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>l=[1,2,3,4,5,6]>>>l5=l[5:1:-1] #取5,4,3,2>>>l5[6,5,4,3]
>>>l6=l[-1:-5:-1] #取-1,-2,-3,-4>>>l6[6,5,4,3]
>>>l7=l[5:-5:-1] #统一正负两种索引,后判断>>>l7[6,5,4,3]
>>>l8=l[-1:1:-1] #取除0,1外的所有>>>l8[6,5,4,3]
删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>l=[1,2,3,4,5,6]>>>l9=l[1::1] #取1及之后的所有>>>l9[2,3,4,5,6]>>>l10=l[:5:1] #取0,1,2,3,4>>>l10[1,2,3,4,5]>>>l11=l[1:5] #取1,2,3,4>>>l11[2,3,4,5]>>>l12=l[1::-1] #取1,0>>>l12[2,1]
>>>l13=l[:-1:-1] #取直范围的方向与步长方向不一致>>>l13[]
删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>l=[1,2,3,4,5,6]>>>l14=l[1+1:11//2:1*2]>>>l14[3,5]
>>>l=list(range(10))>>>l[0,1,2,3,4,5,6,7,8,9]>>>l[2:5]=[20,30]>>>l[0,1,20,30,5,6,7,8,9]删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>l[3::2]=[11,22]>>>lValueError:attempttoassignsequenceofsize2toextendedsliceofsize3>>>l[3::3]=[11,22]>>>l[0,1,20,11,5,6,22,8,9]>>>dell[5:7]>>>l[0,1,20,11,5,8,9]删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>l[2:5]=100TypeError:canonlyassignaniterable>>>l[2:5]=[100]>>>l[0,1,100,8,9]>>>l[len(l):]=[4,5]>>>l[0,1,100,8,9,4,5]删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>l=[1,4,2,9,7,8,9,3,1]>>>x=l.count(9)>>>print(x)2>>>l=[1,4,2,9,7,8,9,3,1]>>>x=l.copy>>>print(x)[1,4,2,9,7,8,9,3,1]
>>>x[0]=0>>>print(x)[0,4,2,9,7,8,9,3,1]
>>>print(l)[1,4,2,9,7,8,9,3,1]
删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>l=[4,55,64,32,16,32]>>>x=l.index(32)>>>print(x)3>>>y=l.index(32,2)>>>print(y)3>>>z=l.index(32,2,3)ValueError:32isnotinlist>>>a=[1,1,5,7,11]>>>a.reverse()>>>a[11,7,5,1,1]删除元素使用`del`、`pop`、`remove`、`clear`等方法删除列表中的元素。切片赋值通过切片对列表进行赋值,实现嫁接、切除或就地修改操作。其他列表操作count、copy、index、reverse、sort等方法或函数。列表操作>>>b=[5,3,1,11,7]>>>b.sort()>>>b[1,3,5,7,11]>>>b.sort(reverse=True)>>>b[11,7,5,3,1]>>>defmyFunc(e):returnlen(e)>>>cars=['Ford','Mitsubishi','BMW','VW']>>>cars.sort(key=myFunc)>>>print(cars)['VW','BMW','Ford','Mitsubishi']列表操作列表内置方法解释L.append(x)在列表L后面增加一个元素xL.clear()移除列表L的所有元素L.count(x)计算列表L中x出现的次数L.copy()列表L的备份L.extend(x)把另一个列表X的内容添加到列表L的后面L.index(value[,start[,stop]])计算在指定范围[start,stop)内首个出现的value的下标L.insert(index,x)在下标index的位置插入xL.pop(index)删除并返回列表中指定下标(位置)的数据,如果下标不指定,则删除最后一项。L.remove(value)删除值为value的第一个元素;若要删除的元素不在列表中,会报错L.reverse()倒置列表LL.sort(reverse=True|False,key=myFunc)对列表元素排序:reverse=True将对列表进行降序排序。默认值为reverse=False;key用于指定排序标准的函数将两个列表相加,得到一个新的列表,这是最直接的方法。列表相加使用`append`方法将元素添加到列表末尾,是列表中元素的一种添加方式。append方法使用`insert`方法在指定位置插入新元素,可以像在字典中那样使用。insert方法使用简洁的语法创建列表,常用于创建空列表或包含单个元素的列表。列表解析式列表创建方法效率比较列表创建方法效率比较涉及两种新模块time模块和random模块time模块用于计时,random模块用于生成随机的元素值在Python中经常需要对程序运行时间进行掌控,一般使用time模块进行计时。time()是一个时间戳,记录从1970年到当下经过的秒数。通过比较列表建立开始前和结束时的时间戳获取时间差,就能确定程序运行时间random模块实现了各种分布的伪随机数生成器,所谓伪随机数,即人类使用算法等方式,以一个基准(也被叫做种子,最常用的就是时间戳)来构造一系列数字,这些数字的特征符合人们所理解的随机数。但因为是通过算法得到的,所以一旦算法和种子都确定,那么产生的随机数序列也是确定的,所以叫伪随机数。一般默认以系统时间为种子fromtimeimporttimefromrandomimportrandom列表创建方法效率比较start=time()lst=[]foriinrange(100000): lst=lst+[random()]print("addtest",str(time()-start)+"s")#用时(现在时间-初始时间)
输出:addtest11.105808019638062sstart=time()lst=[]foriinrange(100000):lst.append(random())print("appendtest",str(time()-start)+"s")
输出:appendtest0.013904333114624023sstart=time()lst=[]foriinrange(100000):lst.insert(0,random())print(”inserttest",str(time()-start)+"s")
输出:inserttest1.6723971366882324sstart=time()lst=[random()foriinrange(100000)]print("listexptest",str(time()-start)+"s")
输出:listexptest0.007883071899414062s列表解析式
>append方法
>insert方法
>列表相加元组0303元组推导式利用推导式生成元组,可以延迟生成元素。01直接创建使用括号直接创建一个元组,可以是空元组或包含多个元素的元组。02使用`tuple()`函数将其他序列类型转换成元组。创建元组>>>a=()>>>b=(100,20)>>>type(b)tuple
>>>c=100,20>>>type(c)tuple
>>>d=(1,)>>>type(d)tuple>>>f=(1)>>>type(f)int
>>>e=1,>>>type(e)tuple
03元组推导式利用推导式生成元组,可以延迟生成元素。01直接创建使用括号直接创建一个元组,可以是空元组或包含多个元素的元组。02使用`tuple()`函数将其他序列类型转换成元组。创建元组>>>a=tuple([2,3,5,7,11])>>>type(a)tuple
>>>tup=(valueforvalueinrange(1,5))>>>print(tup)<generatorobject<genexpr>at0x113e5c2e0>>>>foriintup: print(i)1234元组中的元素无法进行增加、删除、修改或排序操作,只能重新赋值创建新的元组。元组不可修改01元组操作>>>a=(2,3,5,7,11)>>>print(a)(2,3,5,7,11)>>>a=(1,2)>>>print(a)(1,2)>>>a=(2,3,5,7,11) >>>b=(1,2)>>>print(a+b)(2,3,5,7,11,1,2)
>>>a=(2,3,5,7,11) >>>dela[1]TypeError:'tuple'objectdoesn'tsupportitemdeletion>>>dela>>>aNameError:name'a'isnotdefined元组中的元素无法进行增加、删除、修改或排序操作,只能重新赋值创建新的元组。元组不可修改访问元素元素内置方法通过索引访问元组元素,支持切片操作。index()和count()方法用于查找和计算元素的索引和出现次数。元组操作>>>a=(1,2,4,6,7,9) >>>a[1]2
>>>a[1:5:2] #表示索引搜索范围在[1,5),2表示步长(2,6)
index()方法查找和指定值第一次匹配的元素位置索引(根据就近原则,从左往右,找到首个即结束)。调用语法为:tuple.index(value[,start[,stop]])。count()方法返回指定值在元组中出现的次数。使用方式同列表同名方法,调用语法为:tuple.count(value)。列表和元组创建效率比较元组的创建速度比列表稍快,但通常情况下无需特别在意这种微小的差别无论如何,元组和列表都是有效的数据结构,选择哪种结构主要取决于使用场景和性能要求。#多次初始化一个相同元素的列表start=time() foriinrange(100000):a=[1,2,3,4,5,6]print("listtest",str(time()-start)+"s")输出:listtest0.010180234909057617s#多次初始化一个相同元素的元组start=time() foriinrange(100000):a=(1,2,3,4,5,6)print("tupletest",str(time()-start)+"s")输出:tupletest0.005105018615722656s元组记录数据元组是一种适合用于记录数据的类型,可以类似于带字段名的记录。具名元组使用`namedtuple()`函数可以创建具名元组,方便直接通过属性获取元素值。元组优势元组具有方便创建和访问的优势,是一种非常有用的数据类型,尤其适合存放不需要修改的数据。元组的价值fromcollectionsimportnamedtuple #生成一个City类City=namedtuple("City","namecountrypolulationcoordinates")#实例化tokyo=City("Tokyo",'JP','36.93',('35.68','139,69'))print(tokyo)print()print(City._fields)
输出:City(name='Tokyo',country='JP',polulation='36.93',coordinates=('35.68','139,69'))Tokyo('name','country','polulation','coordinates')字符串04字符串索引字符串中的每一个字符可以通过索引访问,索引从0开始。切片操作切片操作可以获取字符串的子串,格式为string[start:end:step]访问元素>>>s="HelloPython,helloworld" >>>s[0]'H'>>>s[5] #注意,空格也是一个字符''>>>s[30] #在进行字符串截取的时候,如果指定的索引不存在,则会抛出异常IndexError:stringindexoutofrange>>>s="HelloPython,helloworld" >>>print(s[6:12:2])Pto>>>print(s[:12]) #从首位切片HelloPython>>>print(s[6:]) #切片到末尾Python,helloworld>>>print(s[:]) #整体切片拷贝HelloPython,helloworld字符串不可修改字符串不可修改,只能通过重新赋值生成新的字符串。重新赋值通过重新赋值,可以改变字符串中字符的排列顺序,但无法增加或删除字符。修改元素>>>s='hello' >>>s[0]=‘k’#会得到错误TypeError:'str'objectdoesnotsupportitemassignment>>>s='heloo'>>>print(s)’heloo’字符串提供了大小写转换方法,如`lower()`、`upper()`、`swapcase()`、`capitalize()`、`title()`。使用`replace()`和`translate()`方法可以替换字符串中的部分元素内容。字符串大小写转换&替换替换元素>>>s="HelloPython,HelloWorld123" >>>s.lower()'hellopython,helloworld123'>>>s="HelloPython,HelloWorld123" >>>s.upper()'HELLOPYTHON,HELLOWORLD123'>>>a='abcsda'>>>print(a.replace('b','小明')) a小明csda#使用带有ASCII码的字典将83(S)替换为80(P)>>>mydict={83:80}>>>txt="HelloSam!">>>print(txt.translate(mydict)) HelloPam!maketrans()方法可以创建映射表。这个映射表指出了不同Unicode码点之间的转换关系。语法格式为:string.maketrans(x,y,z)其中:x是必需参数。如果仅指定一个参数,x是描述如何执行替换的字典;如果指定两个或多个参数,则此参数必须是一个字符串,该字符串指定要替换的字符。y是可选参数,是与参数x长度相同的字符串。z是可选参数。描述要从原始字符串中删除的字符。使用映射表替换多个字符,maketrans()方法返回一个以Unicode格式描述每个替换的字典。创建映射表替换元素>>>txt="GoodnightSam!";>>>x="mSa";>>>y="eJo";>>>z="odnght";>>>mytable=txt.maketrans(x,y,z); >>>print(txt.maketrans(x,y,z)){109:101,83:74,97:111,111:None,100:None,110:None,103:None,104:None,116:None}>>>print(txt.translate(mytable));GiJoe!字符串是不可变的,意味着一旦创建,其元素就不能被更改。因此,元组可以看作是不可变的列表。字符串不可修改由于字符串不可修改,无法在中间添加新元素,但可以通过拼接来实现。例如,将两个字符串连接起来可以使用"+"号。拼接操作添加元素>>>mot_en="Rememberanceisaformmeeting.Frgetfulnessisaformoffreedom" >>>mot_cn="记忆是一个相遇。遗忘是一种自由。">>>print(mot_en+"-"+mot_cn)Rememberanceisaformmeeting.Frgetfulnessisaformoffreedom-记忆是一个相遇。遗忘是一种自由。>>>a=23>>>message="Happy"+str(a)+"rdBirthday!" >>>print(message)Happy23rdBirthday!
>>>message="Happy"+23+"rdBirthday!"TypeError:canonlyconcatenatestr(not"int")tostr
删除元素字符串不可修改由于字符串不可修改,只能用del语句删除整个字符串。空白字符删除使用strip()、lstrip()、rstrip()方法可以删除字符串首尾的空白字符或指定字符。元素内容替换>>>s1="HelloPython">>>print(s1.strip())HelloPython>>>s2="HelloPython">>>print(s2.strip())HelloPython>>>s3="HelloPython" >>>print(s3.strip())HelloPython>>>s="HelloPython">>>s.lstrip()'HelloPython'>>>s.rstrip()'HelloPython'使用index()、count()、find()、startswith()、endswith()方法进行检索。字符串检索检索元素>>>txt="Hello,welcometomyworld." >>>x=txt.index("e",5,10)>>>print(x)8>>>txt="Hello,welcometomyworld." >>>x=txt.count("my",10,24)>>>print(x)1>>>txt="Hello,welcometomyworld." >>>x=txt.find("my",10,24)>>>print(x)18>>>txt="Hello,welcometomyworld." >>>x=txt.find("q",)>>>print(x)-1>>>y=txt.index("q")ValueError:substringnotfound使用index()、count()、find()、startswith()、endswith()方法进行检索。字符串检索检索元素>>>txt="Hello,welcometomyworld." >>>x=txt.startswith("Hello")>>>print(x)True>>>txt="Hello,welcometomyworld." >>>x=txt.endswith("word")>>>print(x)False将字符串拆分为列表,使用split()方法。将列表中的元素连接为字符串,使用join()方法。列表化字符串和列表的相互操作>>>txt="hello,mynameisPeter,Iam26yearsold" >>>x=txt.split(",")>>>print(x)['hello','mynameisPeter','Iam26yearsold']>>>name='JohnJohnson’ >>>a=name.split()>>>print(a)['John','Johnson']>>>txt="apple#banana#cherry#orange" >>>x=txt.split("#",1)>>>print(x)['apple','banana#cherry#orange']字符串常用方法或函数汇总方法说明capitalize()将第一个字符转换为大写casefold()将字符串转换为小写,Python3.3版本之后引入的,其效果和lower()方法非常相似,都可以转换字符串中所有大写字符为小写。center()返回一个原字符串居中,并使用空格填充至长度width的新字符串。默认填充字符为空格。count()返回指定值在字符串中出现的次数encode()返回指定的编码格式编码字符串。endswith()如果字符串以指定值结尾,则返回trueexpandtabs()返回字符串中的tab符号('\t')转为空格后生成的新字符串。find()在字符串中搜索指定的值,并返回找到该字符串的位置format()把指定值格式化为指定格式。format_map()针对字典类型的格式化后的新的对象index()在字符串中搜索指定的值,并返回找到该字符串的位置isalnum()如果字符串中的所有字符都是字母数字,则返回Trueisalpha()如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False。isdecimal()如果字符串是否只包含十进制字符返回True,否则返回False。isdigit()如果字符串只包含数字则返回True否则返回False。isidentifier()用于判断字符串是否是有效的Python标识符,可用来判断变量名是否合法。islower()如果字符串中的所有字符均为小写,则返回Trueisnumeric()如果字符串中只包含数字字符,则返回True,否则返回Falseisprintable()如果字符串中的所有字符都是可打印的,则返回Trueisspace()如果字符串中的所有字符都是空格,则返回Trueistitle()如果字符串中所有的单词拼写首字母是否为大写,且其他字母为小写则返回True,否则返回False.isupper()如果字符串中的所有字符均为大写,则返回Truejoin()获取可迭代对象中的所有元素,并将它们连接为一个字符串。ljust()返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。lower()将字符串转换为小写lstrip()返回截掉字符串左边的空格或指定字符后生成的新字符串。maketrans()用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。partition()返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。replace()返回一个字符串,其中将指定值替换为指定值rfind()返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1。rindex()返回子字符串最后一次出现在字符串中的的索引位置,如果没有匹配项则会报一个异常。rjust()返回一个原字符串右对齐,并使用空格填充至长度width的新字符串。如果指定的长度小于字符串的长度则返回原字符串。rpartition()返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。rsplit()在指定的分隔符处分割字符串,并返回一个列表rstrip()返回删除string字符串末尾的指定字符后生成的新字符串。split()在指定的分隔符处分割字符串,并返回一个列表splitlines()在换行符处分割字符串并返回一个列表startswith()如果字符串以指定值开头,则返回truestrip()返回移除字符串头尾指定的字符生成的新字符串。swapcase()交换大小写,小写变成大写,反之亦然title()将每个单词的第一个字符转换为大写translate()返回翻译后的字符串upper()将字符串转换为大写zfill()返回指定长度的字符串,原字符串右对齐,前面填充0。通用操作05通用操作操作描述示例:X=[1,1,2,3,5,8];Y='hello'X1+X2联接序列X1和X2,生成新序列
注意:序列类型必须相同,列表不能与字符串相加。>>>X+X[1,1,2,3,5,8,1,1,2,3,5,8]>>>Y+Y'hellohello'X*n序列X重复n次,生成新序列>>>X*2[1,1,2,3,5,8,1,1,2,3,5,8]>>>Y*2'hellohello'X[i]引用序列X中下标为i的成员>>>X[0][1]>>>Y[-1]'o'X[i:j]引用序列X中下标为i到j-1的子序列切片操作,用于访问部分数据>>>X[1:-3][1,2]>>>X[3:][3,5,8]>>>X[:3][1,1,2]X[i:j:k]引用序列X中下标为i到j-1的子序列,步长为k>>>X[0:5:2][1,2,5]>>>X[-1:1:-1][8,5,3,2]>>>X[::-1][8,5,3,2,1,1]len(X)计算序列X中成员的个数>>>len(X)6>>>len(Y)5max(X)序列X中的最大值字符串的大小是按照其Unicode编码来比较的>>>max(X)8>>>max(Y)'o'min(X)序列X中的最小值>>>min(X)1>>>min(Y)'e'vinX检查v是否在序列X中,返回布尔值对于列表,只能判断某个元素是否在序列中;对于字符串,可以判断某段字符是否在该序列中。>>>[1,1]inXFalse>>>[1,1]in[[1,1],2,3,5,8]True>>>'l'in'hello'True>>>'ll'in'hello'TruevnotinX检查v是否不在序列X中,返回布尔值
文件文件处理是字符串数据类型的应用程序。所有文件处理程序都能够保存和读取文档作为磁盘上的文件。文件的输入和输出实际上是字符串处理的另一种形式。文件是存储在辅助存储器上的数据序列,可以包含任何数据类型,最简单的是文本文件。06使用`open()`函数创建一个文件对象,指定文件名和打开模式(读取、写入、追加等)打开文件使用文件对象的`read()`、`readline()`或`readlines()`方法读取文件内容读取文件内容使用文件对象的`write()`方法写入内容到文件写入文件内容文件使用文件对象的`close()`方法关闭文件关闭文件调用语法为:open(name[,mode])其中:name是一个字符串,提供了磁盘当前相对路径下的文件名,又或者是该文件的绝对路径;mode参数决定了打开文件的模式,如只读、写入、追加等,该参数可选,默认文件访问模式为只读。mode参数描述t文本模式(默认)。x写模式,新建一个文件,如果该文件已存在则会报错。b二进制模式。+打开一个文件进行更新(可读可写)。U通用换行模式(不推荐)。r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb以二进制格式打开一个文件用于只读。文件指针默认放在文件的开头。一般用于非文本文件如图片等。r+打开一个文件用于读写。文件指针将会放在文件的开头。rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
一般用于非文本文件如图片等。w打开一个文件只用于写入。如果该文件已存在,则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。wb以二进制格式打开一个文件只用于写入。如果该文件已存在,则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。w+打开一个文件用于读写。如果该文件已存在,则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。wb+以二进制格式打开一个文件用于读写。
如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。a打开一个文件用于追加。如果该文件已存在,文件指针放在文件结尾,新内容被写入到已有内容之后。
如果该文件不存在,创建新文件进行写入。ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针放在文件结尾,新内容被写入到已有内容之后。
如果该文件不存在,创建新文件进行写入。a+打开一个文件用于读写。如果该文件已存在,文件指针放在文件结尾,文件打开时会是追加模式。
如果该文件不存在,创建新文件用于读写。ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。使用`open()`函数创建一个文件对象,指定文件名和打开模式(读取、写入、追加等)打开文件使用文件对象的`read()`、`readline()`或`readlines()`方法读取文件内容读取文件内容使用文件对象的`write()`方法写入内容到文件写入文件内容文件使用文件对象的`close()`方法关闭文件关闭文件#read_numbers.py
fname=input("Enterfilename:") infile=open(fname,"r")data1=infile.read()print(data1)infile.close()
输出:Enterfilename:numbers.txtThisisatxtwithphone-numbers:13745638574150849275881346477412215780990234使用`open()`函数创建一个文件对象,指定文件名和打开模式(读取、写入、追加等)打开文件使用文件对象的`read()`、`readline()`或`readlines()`方法读取文件内容读取文件内容使用文件对象的`write()`方法写入内容到文件写入文件内容文件使用文件对象的`close()`方法关闭文件关闭文件#readline_numbers.py'''打开文件,对象保存至infile'''data2=infile.readline()print(data2)#若不需要整行内容获取,而是部分字节,可以在()输入整数,表示需要读取前几个字节#注意,之前已读取的行信息将不再被读取data2_2=infile.readline(5)print(data2_2)infile.close()输出:Enterfilename:numbers.txtThisisatxtwithphone-numbers:13745使用`open()`函数创建一个文件对象,指定文件名和打开模式(读取、写入、追加等)打开文件使用文件对象的`read()`、`readline()`或`readlines()`方法读取文件内容读取文件内容使用文件对象的`write()`方法写入内容到文件写入文件内容文件使用文件对象的`close()`方法关闭文件关闭文件#readline_numbers_2.py'''打开文件,对象保存至infile'''while1:data=infile.readline()ifnotdata:breakprint(data)infile.close()
输出:Enterfilename:numbers.txtThisisatxtwithphone-numbers:
使用`open()`函数创建一个文件对象,指定文件名和打开模式(读取、写入、追加等)打开文件使用文件对象的`read()`、`readline()`或`readlines()`方法读取文件内容读取文件内容使用文件对象的`write()`方法写入内容到文件写入文件内容文件使用文件对象的`close()`方法关闭文件关闭文件#readlines_numbers.py'''打开文件,对象保存至infile'''data3=infile.readlines()print(data3)infile.close()
输出:Enterfilename:numbers.txt['Thisisatxtwithphone-numbers:\n',n',n',n',n']使用`open()`函数创建一个文件对象,指定文件名和打开模式(读取、写入、追加等)打开文件使用文件对象的`read()`、`readline()`或`readlines()`方法读取文件内容读取文件内容使用文件对象的`write()`方法写入内容到文件写入文件内容文件使用文件对象的`close()`方法关闭文件关闭文件#readlines_numbers_2.py'''打开文件,对象保存至infile'''#如果返回的字节总数大于5,则不要返回下一行data4=infile.readlines(5)print(data4)infile.close()
输出:Enterfilename:numbers.txt['Thisisatxtwithphone-numbers:\n']使用`open()`函数创建一个文件对象,指定文件名和打开模式(读取、写入、追加等)打开文件使用文件对象的`read()`、`readline()`或`readlines()`方法读取文件内容读取文件内容使用文件对象的`write()`方法写入内容到文件写入文件内容文件使用文件对象的`close()`方法关闭文件关闭文件#readlines_numbers_3.py'''打开文件,对象保存至infile '''fordataininfile.readlines(): print(data)infile.close()
输出结果同readline_numbers_2.py使用`open()`函数创建一个文件对象,指定文件名和打开模式(读取、写入、追加等)打开文件使用文件对象的`read()`、`readline()`或`readlines()`方法读取文件内容读取文件内容使用文件对象的`write()`方法写入内容到文件写入文件内容文件使用文件对象的`close()`方法关闭文件关闭文件#read_each_line_numbers.py'''打开文件,对象保存至infile'''
forlineininfile:print(line)infile.close()
输出结果同readline_numbers_2.py使用`open()`函数创建一个文件对象,指定文件名和打开模式(读取、写入、追加等)打开文件使用文件对象的`read()`、`readline()`或`readlines()`方法读取文件内容读取文件内容使用文件对象的`write()`方法写入内容到文件写入文件内容文件使用文件对象的`close()`方法关闭文件关闭文件#continue_write.pyoutfile=open("writein.txt","a") #若需要覆盖原始内容,mode选择woutfile.write("12785776986") #print语句也能写入:print("12785776986",file=outfile)outfile.close()
#打开并读取文件后追加:infile=open("writein.txt","r")print(infile.read())infile.close()
输出:Thisisatxtwithphone-numbers:1374563857415084927588134647741221578099023412785776986
字典和集合的基本操作字典集合可变类型和不可变类型字典字典(Dictionary)是Python中的一种无序、可变、有索引的集合,用于存储键值对。字典中的每个键值对都包含一个键和其对应的值,键是唯一的,但值可以重复。01thisdict={"name":"cjavapy", "age":3,"gender":"man"}字典的创建创建空字典使用花括号`{}`或`dict()`函数创建空字典。直接赋值创建使用花括号并指定键值对创建字典。使用关键字参数创建使用`dict()`函数和关键字参数创建字典。使用`fromkeys()`方法创建使用`fromkeys()`方法创建具有指定键的字典。>>>a={} >>>a=dict()>>>dic={'spam':1,'egg':2,'bar':3} >>>dic{'bar':3,'egg':2,'spam':1}>>>dic=dict(spam=1,egg=2,bar=3) >>>x=('key1','key2','key3') >>>y=0>>>thisdict=dict.fromkeys(x,y)>>>print(thisdict){'key1':0,'key2':0,'key3':0}
字典的创建通过二元组列表创建使用`dict()`函数将二元组列表转换为字典。使用`zip`函数创建结合`dict()`和`zip`函数创建字典。使用字典推导式通过推导式创建字典。>>>lis=[('spam',1),('egg',2),('bar',3)] >>>dic=dict(lis)>>>dic=dict(zip('abc',[1,2,3])) >>>print(dic){'a':1,'c':3,'b':2}>>>dic={i:2*iforiinrange(3)} >>>dic{0:0,1:2,2:4}访问字典的值删除字典条目添加/修改字典条目通过键访问字典中的值,也可以使用`get()`方法获取指定键的值。使用赋值语句添加新的键值对,或使用`update()`方法更新字典。使用`del`语句删除指定的键值对,或使用`pop()`方法删除指定键及其对应的值,或使用`clear()`方法清空字典,或使用`popitem()`方法删除最后插入的键值对。基本的字典操作>>>thisdict={"name":"cjavapy","age":3,"gender":"man"} >>>thisdict["name"]'cjavapy'>>>thisdict.get("age") 3>>>thisdict.get("job")>>>thisdictNone访问字典的值删除字典条目添加/修改字典条目通过键访问字典中的值,也可以使用`get()`方法获取指定键的值。使用赋值语句添加新的键值对,或使用`update()`方法更新字典。使用`del`语句删除指定的键值对,或使用`pop()`方法删除指定键及其对应的值,或使用`clear()`方法清空字典,或使用`popitem()`方法删除最后插入的键值对。基本的字典操作>>>thisdict={"name":"cjavapy","age":3,"gender":"man"} #获取所有key>>>thisdict.keys() dict_keys(['name','age','gender’])
#获取所有值>>>thisdict.values()dict_values(['cjavapy',3,'man’])
#获取所有键值对>>>thisdict.items()dict_items([('name','cjavapy'),('age',3),('gender','man’)])
#利用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能化结构健康监测材料考核试卷
- 倡导绿色环保主题演讲(19篇)
- 玻璃纤维增强塑料在汽车领域的应用考核试卷
- 合成树脂的智能材料特性考核试卷
- 2025介绍春节的演讲稿范文(15篇)
- 有梦想的演讲稿(19篇)
- 自来水与城市供水问题解决考核试卷
- 电子电路的智能语音识别算法考核试卷
- 个人借条有法律效力(8篇)
- 涡轮增压器的性能特性分析与设计考核试卷
- 第15课《青春之光》课件-2024-2025学年统编版语文七年级下册
- DB14-T 1737-2024 医疗护理员培训机构服务规范
- 尼康COOLPIXL120用户手册
- ICT测试设备简介
- 2024年中考模拟试卷生物(广东深圳卷)
- 精神类药物中毒护理查房
- 项目工期管理
- 【MOOC】英语语法与写作-暨南大学 中国大学慕课MOOC答案
- 2023年新高考天津卷历史高考真题(含答案)
- 部门发展规划
- 大学生爱国教育十讲(中国海洋大学)知到智慧树章节答案
评论
0/150
提交评论