您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Python字符串列表和元组
CS,ZJU2018年12月Overview序列的访问及运算符字符串使用列表和元组使用2Python程序设计3.1序列的访问及运算符序列(Sequence)为满足程序中复杂的数据表示,Python支持组合数据类型,可以将一批数据作为一个整体进行数据操作,这就是数据容器的概念。容器中可包含多个数据(元素),容器中的数据(元素)有先后次序,每个元素通过用其下标(索引)来访问。序列的下标从0开始,后面下标依次为1,2,3,….。序列是其中一大类数据容器的统称,不是具体的数据类型。常用的序列类型:列表(list),字符串(string),元组(tuple)Python程序设计3访问单个数据用[]来访问序列中的一个元素。比如访问字符串中的某个字符:prompt=‘hello’print(prompt[0])输出:hprint(prompt[4])输出:oPython程序设计4访问单个数据(续)假设序列中的元素个数是n,下标的有效范围是0到n-1(正向索引),或者-1到-n(反向索引)。如果下标的绝对值大于n-1,则会发生下标越界错误。如果下标的值为负数,表示从序列的最后一个元素往前引用,比如:prompt=‘hello’print(prompt[-1],prompt[-4])输出oePython程序设计5访问一部分数据如果要访问序列中的一部分元素,可以使用切片(slice)。切片通过冒号分隔两个下标来实现:s[a:b]指的是从下标a到b对应的元素,但不包括下标b对应的元素s[a:]省略后面的数字,指的是从下标为a对应的元素到后面所有的元素s[:b]指的是从序列的开头的元素直到下标b对应的元素,但不包括下标b对应的元素s[:]指的是s从头到尾的元素Python程序设计6访问一部分数据(续)切片使用负的下标访问a[1:-3]结果:[3,5]切片省略第2个下标,表示从第1个下标的元素开始到最后一个元素的切片。a[2:]结果:[5,7,11,13]第1个下标为0时,可以省略。a[:3]结果:[2,3,5]a[:-2]结果:[2,3,5,7]Python程序设计7访问一部分数据(续2)切片使用第3个参数,该参数表示切片选择元素的步长。a[0:5:2]结果是:[2,5,11]切片使用第3个参数为负数时,表示逆向取切片。a[-1:0:-1]结果是:[13,11,7,5,3]a[::-1]结果是:[13,11,7,5,3,2]Python程序设计8复制一个序列(用Pythontutor)如果将一个序列变量赋值给另外一个变量,则这2个变量表达了同一个序列。a=[2,3,5,7,11,13]b=ab[0]=1print(a)输出:[1,3,5,7,11,13]如果希望2个变量各自拥有独立的序列,可使用切片。a=[2,3,5,7,11,13]b=a[:]注:a[:]表示从头到尾的整个序列“切”出来的序列Python程序设计9通用的序列操作操作描述X1+X2联接序列X1和X2,生成新序列X*n序列X重复n次,生成新序列X[i]引用序列X中下标为i的成员X[i:j]引用序列X中下标为i到j-1的子序列X[i:j:k]引用序列X中下标为i到j-1的子序列,步长为klen(X)计算序列X中成员的个数max(X)序列X中的最大值min(X)序列X中的最小值vinX检查v是否在序列X中,返回布尔值vnotinX检查v是否不在序列X中,返回布尔值Python程序设计10表3-1序列的操作所有的序列类型都可以进行的操作归纳如下表所示。序列的运算符加号(+)连接2个序列a=[2,3,5,7,11,13]b=[4,6,8,9,10,12]print(a+b)输出:[2,3,5,7,11,13,4,6,8,9,10,12]乘号(*)重复序列[4,0,4]*3结果是:[4,0,4,4,0,4,4,0,4]Python程序设计11序列的运算符(续)检查数据是否在序列中(in)a=[2,3,5,7,11,13]print(3ina)输出结果:True对于列表和字符串,in有所不同,比较下面例子:[2,3]in[2,3,5,7,11,13]结果是:False[2,3]in[[2,3],5,7,11,13]结果是:True‘e’in‘hello’结果是:True‘he’in‘hello’结果是:Truein可以检查某个字符串是否是另一个字符串的一部分。Python程序设计12计算序列的长度len()函数返回序列内部元素的个数。len([2,3,5,7)结果是:4len('helloworld')结果是:11Python程序设计13计算序列的最小值、最大值min()和max()函数计算序列中的最小值和最大值min([2,3,5,7,11,13])结果是:2min('好好学习天天向上')结果是:'上'注:字符串的大小是按照其Unicode编码来比较的。Python程序设计143.2字符串使用字符串是一连串的字符,用英文单引号(')或英文双引号()括起来。'Pythonisthebest.'Programmingisfun.引号必须成对出现;如果字符串中包含了单引号或双引号,则要用另一种引号括起来。It'samazing!'Hesaid,Youaresocool!'Python程序设计15字符串使用(续)长字符串用3个引号(单引号或双引号)括起来的字符串可以包含多行字符串。'''Thisisatestformultiplelinesoftext.'''表示包含了2个换行符的字符串:'Thisisatest\nformultiplelines\noftext.'如果要在程序中用多行表示一个字符串,则可以在每行的结尾用反斜杠(\)结束。'hello\world'结果是:'helloworld'Python程序设计16字符串使用(续2)原始字符串在一个字符串字面量前加一个字符r,表示这个字符串是原始字符串,其中的\不被当作是转义字符前缀。r=r'hello\nworld'print(r)输出:hello\nworld相当于r='hello\\nworld'Python程序设计17字符串使用(续3)字符串是不可修改字符串中的数据(字符)是不能修改的。s='hello's[0]='k'#会得到错误可以通过用新的字符串对变量重新赋值,表示新的字符串。s='hello's='bye'这样变量s表示字符串'bye'。Python程序设计18字符串常用方法或函数字符串常用方法或函数解释S.title()字符串S首字母大写S.lower(),字符串S变小写S.upper()字符串S变大写S.strip(),S.rstrip(),lstrip()删除前后空格,删除右空格,删除左空格S.find(sub[,start[,end]])在字符串S中查找sub子串首次出现的位置S.replace(old,new)在字符串S中用new子串替换old子串S.join(X)将序列X合并成字符串S.split(sep=None)将字符串S拆分成列表S.count(sub[,start[,end]])计算sub子串在字符串S中出现的次数Python程序设计19表3-2字符串常用方法或函数字符串常用方法或函数(续)查找子串find()在字符串中查找子串的位置,返回第一次出现子串x的位置下标(从0开始),如果找不到返回-1。s='Thisisatest.'print(s.find('is'))输出:2s='Thisisatest.'print(s.find('ok'))输出:-1Python程序设计20字符串常用方法或函数(续2)s=‘Thisisatest.’print(s.find(‘is’,3))#指定查找开始位置输出:5s=‘Thisisatest.’print(s.find(‘is’,3,6))#指定查找开始位置及终止位置(不包括位置6)输出:-1Python程序设计21字符串常用方法或函数(续3)统计子串出现的次数count()s='Thisisatest.'print(s.count('is'))输出:2另一种写法print(str.count(s,'is'))Python程序设计22字符串常用方法或函数(续4)修改大小写函数title()将字符串中每个单词的首字母变成大写字母。name=‘johnjohnson’print(name.title())输出:JohnJohnson函数upper()将字符串中所有字母变成大写字母。函数lower()将字符串中所有字母变成小写字母。Python程序设计23字符串常用方法或函数(续5)删除两端的空格函数rstrip()去掉字符串右边的空格。name=Pythonname.rstrip()结果是:'Python'函数lstrip()去掉字符串左边的空格。函数strip()去掉字符串左右两边的空格。Python程序设计24字符串常用方法或函数(续6)替换字符串中的子串replace()s='Thisisatest.'t=s.replace('is','eez')print(t)输出:Theezeezatest.Python程序设计25将数字转换成字符串将数字类型的数据(整数、浮点数和复数)转换成字符串,有下列三种方法。1.函数str()age=23print('HappyBirthday'+str(age)+'!')输出:HappyBirthday23!注:不能写成:print('HappyBirthday'+age+'!')Python程序设计26将数字转换成字符串(续)2.字符串格式化运算符%带有转换说明符%的字符串%(需要转换的值[,需要转换的值])'HappyBirthday%d!'%(23)结果是:'HappyBirthday23!'也可以有多个转换的值'HappyBirthday%d,%s!'%(23,'JohnJohnson')结果是:'HappyBirthday23,JohnJohnson!'Python程序设计27格式占位符被转换的数据将数字转换成字符串(续2)占位符含义%c单个字符,替换成只有一个字符的字符串或将表示一个字符的Unicode码转成一个字符替换进来%s字符串%d整数%u无符号整数%o八进制数%x十六进制数%X字母大写的十六进制数%f浮点数%e科学计数法表示的浮点数%E大写的E表示的科学计数法%g综合的%f和%e,系统自动决定是否使用科学计数法%G大写表示的%gPython程序设计28表3-3Python字符串的格式占位符将数字转换成字符串(续3)3.format()函数是字符串的一个函数,也是用来形成格式化的字符串。使用{}来表示占位符。age=23'Myageis{}'.format(age)结果是:'Myageis23'Python程序设计29格式占位符被转换的数据将数字转换成字符串(续4)format()函数支持多个占位符,可以为占位符指定的被转换数据的索引。'mynameis{},age{}'.format('Mary',18)结果是:'mynameisMary,age18''mynameis{1},age{0}'.format(10,'Mary')结果是:'mynameisMary,age10'Python程序设计30将数字转换成字符串(续5)format()函数也可以指定填充、对齐和宽度,以及精度和进制。它的一般格式是:{索引:填充字符对齐方式宽度.精度格式}例:'{0:*10}'.format(10)##右对齐'{0:*10}'.format(10)##左对齐'{0:*^10}'.format(10)##居中对齐'{0:.2f}'.format(1/3)'{0:b}'.format(10)#二进制'{0:o}'.format(10)#八进制'{0:x}'.format(10)#16进制'{:,}
本文标题:Python字符串列表和元组
链接地址:https://www.777doc.com/doc-4909234 .html