您好,欢迎访问三七文档
2020/3/221Python语言编程导论第六章数据结构张晋连2016.10主要内容•概述•序列通用操作•字符串•列表•元组•字典•集合2020/3/222一、概述•Python提供了功能强大的内置数据结构。包括:–字符串–列表–元组–字典–集合2020/3/223序列二、序列通用操作•Python中,字符串、列表和元组都属于序列。•序列有一些通用的操作。包括:索引(indexing)、切片(slicing)、加(adding)、乘(multiplying)、检查某个元素是否属于序列的成员(成员资格)、计算序列长度、找出最大元素和最小元素等。2020/3/224序列相关操作标准类型运算符•值比较•对象身份比较•布尔运算序列类型运算符•获取•重复•连接•判断内建函数•序列类型转换工厂函数•序列类型可用内建函数2020/3/225标准类型运算符2020/3/226标准类型运算符示例2020/3/227序列类型运算符2020/3/228序列的索引•序列中的所有元素都有编号。从0开始递增。这些元素可以通过编号分别访问。索引有正索引和负索引,可根据实际情况选用。•例如:字符串’apple’的正索引和负索引2020/3/229序列类型运算符示例2020/3/2210序列类型转换工厂函数list()str()tuple()2020/3/2211序列类型可用内建函数2020/3/2212•说明:在循环中引用相关函数,可以高效地得出相应结果。2020/3/2213•例:同时获取序列索引及值•例:同时循环两个或多个序列2020/3/2214•例:逆向循环序列•例:按排序后的顺序循环序列三、字符串•在Python中,字符串是除数字外最重要的数据类型。字符串无处不在:将字符串输出到屏幕上;从用户的键盘输入读取字符串;文件通常被视为大型字符串;网页大部分是由文本组成的。•可充分利用索引和切片—用于从字符串中提取子串。•虽然Python字符串提供了众多实用的函数,但实际处理字符串时,常常需要更强大的工具。Python提供了一种用于复杂字符串处理的微型语言—正则表达式,但正则表达式并不是Python的一部分。2020/3/2215例6-1:温度转换程序2020/3/2216例6-2:输入一个月份数字,返回对应月份名称缩写2020/3/22171、字符串格式化•C语言使用函数printf()格式化输出结果,Python也提供了类似功能。•Python将若干值插入带有“%”标记的字符串中,从而可以按照指定格式输出字符串。•语法:%s%str1%s%s%(str1,str2)2020/3/2218例6-3:格式化字符串2020/3/2219执行结果:例6-4:带精度的格式化2020/3/2220执行结果:Python格式化字符串的替代符及含义:符号描述符号描述%c格式化字符及其ASCII码%f格式化浮点数字,可指定小数点后的精度%s格式化字符串%e用科学计数法格式化浮点数%d格式化整数%E作用同%e%u格式化无符号整数%g根据值的大小决定使用%f或%e%o格式化无符号八进制数%G作用同%g%x格式化无符号十六进制数%p用十六进制数格式化变量的地址%X格式化无符号十六进制数(大写)%%若在字符串中输出“%”,需要使用“%%”2020/3/2221例6-5:符号、对齐和用0填充•在字段宽度和精度之间还可以放置一个“标志”,该标志可以是零、加号、减号或空格。零表示数字将会用0填充。2020/3/2222执行结果:2、字符串的转义字符•计算机中存在可见字符与不可见字符。可见字符指键盘上的字母、数字和符号。不可见字符是指换行、回车、制表符等字符。•对于不可见字符,Python使用的方法类似于C语言,都是使用“\”作为转义字符。•Python还提供了函数strip()、lstrip()、rstrip()去除字符串中的转义字符。2020/3/2223Python常用的转义字符及其含义符号描述符号描述\\反斜线\v纵向制表符\’单引号\r回车符\”双引号\f换页符\a发出系统响铃声\o八进制数代表的字符\b退格符\x十六进制数代表的字符\n换行符\000终止符,其后的字符串全部忽略\t横向制表符2020/3/2224例6-6:转义字符应用2020/3/2225执行结果:3、字符串的常用方法•Python字符串自带了大量很有用的方法(字符串类内定义的函数),可调用dir并将参数指定为任何字符串(如:dir(‘’))来查看它们。•虽无必要准确记住所有字符串方法功能,但最好有个大致了解,这样有益于需要时去查询具体使用。•字符串方法的详细介绍可参阅其文档字符串或Python在线文档()。•此处介绍常用的字符串方法。2020/3/2226字符串常用方法2020/3/2227(1)字符串测试方法名何时返回True方法名何时返回Trues.endswith(t)s以字符串t结尾s.islower()s只包含小写字母s.startswith(t)s以字符串t打头s.isnumeric()s只包含数字s.isalnum()s只包含字母和数字s.isprintable()s只包含可打印字符s.isalpha()s只包含字母s.isspace()s只包含空白字符s.isdecimal()s只包含表示十进制数字的字符s.istitle()s是个大小写符合标题要求的字符串s.isdigit()s只包含数字字符s.isupper()s只包含大写字母s.isidentifier()s是合法的标识符tinss包含字符串t2020/3/2228•用于检测字符串是否为特定格式,它们组成了一个最大的字符串方法组。•测试方法的值都返回True或False。例如:2020/3/2229(2)字符串的查找方法名返回值s.find(t)若未找到字符串t,则返回-1;否则返回t在s中的起始位置s.rfind(t)与find相同,但从右往左查找s.index(t)与find相同,但如果在s中找不到t,则引发ValueError异常s.rindex(t)与index相同,但从右往左查找2020/3/2230•说明:方法index和find之间的差别在于没有找到指定子串的情形。方法index引发异常ValueError,而方法find将返回-1。例6-7:查找方法应用2020/3/2231(3)字符串的替换方法名返回的字符串s.replace(old,new)将s中的每个old替换为news.expandtabs(n)将s中的每个制表符扩展为空格,空格宽度为n2020/3/2232•Python字符串自带了两个替换方法,如下表所示。•注意:使用替换方法可轻松地删除字符串中的子串。例6-8:字符串替换2020/3/2233(4)字符串拆分方法名返回的字符串s.partition(t)将s拆分为三个字符串(head、t和tail),其中head为t前面的子串,tail为t后面的子串。返回值为元组s.rpartition(t)与partition相同,但从s的右端开始搜索t。返回值为元组s.split(t)以t为分隔符,将s划分成一系列子串,并返回一个由这些子串组成的列表s.rsplit(t)与split相同,但从s的右端开始搜索ts.splitlines()返回一个由s中的各行组成的列表2020/3/2234•拆分方法将字符串拆分成多个子串。如下表所示。例6-9:拆分字符串2020/3/2235执行结果:例6-10:使用split()方法获取子串2020/3/2236执行结果:(5)改变大小写方法名返回的字符串s.capitalize()将s[0]改为大写,其余小写s.lower()让s的所有字母都小写s.upper()让s的所有字母都大写s.swapcase()将小写字母改为大写,并将大写字母改为小写s.title()让s的大小写符合标题的要求2020/3/2237•说明:在以上函数中,Python都创建并返回一个新字符串,Python不会真正修改原字符串。例如:2020/3/2238例6-11:•如从网络上下载的类似如下形式的一些句子:WhatdoyouthinkofthissayingNopain,Nogain?•对于句子中双引号中的内容,首先判断其是否满足标题格式,不管满足与否最终都将其转换为标题格式输出。2020/3/22392020/3/2240(6)设置字符串格式方法名返回的字符串s.center(n,ch)包含n个字符的字符串,其中s位于中间,两边用字符ch填充s.ljust(n,ch)包含n个字符的字符串,其中s位于左边,右边用字符ch填充s.rjust(n,ch)包含n个字符的字符串,其中s位于右边,左边边用字符ch填充s.format(vars)包含用于设置字符串格式的微型语言,详见:例6-12:设置格式2020/3/2242执行结果:(7)字符串剥除方法名返回的字符串s.strip(ch)从s开头和末尾删除所有包含在字符串ch中的字符s.lstrip(ch)从s开头(左端)删除所有包含在字符串ch中的字符s.rstrip(ch)从s末尾(右端)删除所有包含在字符串ch中的字符2020/3/2243•剥除方法用于删除字符串开头或末尾多余的字符。如下表所示。•默认情况下,剥除空白字符;如果指定了字符串参数,则剥除该字符串中的字符(空白字符包括:空格本身、回车\r、回车换行\n、制表符\t、换页符\f)。例6-13:字符串剥除2020/3/2244例6-14:去除转义字符2020/3/2245(8)字符串比较•Python直接使用“==”“!=”操作符比较两个字符串的内容。•若要比较字符串的部分内容,可以先截取子串,再使用“==”“!=”操作符进行比较。•若要比较字符串的开头和结尾部分,更方便的方式是使用startswith()或endswith()函数。•startswith()与endswith()的声明为:–startswith(substring,[start[,end]])–endswith(substring,[start[,end]])2020/3/2246例6-15:比较字符串开始和结束处2020/3/2247执行结果:(9)字符串的合并•之前介绍过,Python可使用“+”连接不同的字符串。•除此之外,还可以使用join方法(是split方法的逆方法)和reduce函数实现字符串的合并。•说明:reduce是functools模块中的函数。2020/3/2248例6-16:使用join函数连接字符串2020/3/2249执行结果:例6-17:使用reduce函数连接字符串2020/3/2250执行结果:5、字符串与日期的转换•在实际应用中,经常需要将日期类型与字符串类型互相转换。•Python提供了time模块处理日期和时间。函数strftime()可以实现从时间到字符串的转换。•字符串到时间的转换要进行两次转换,需要使用time模块和datetime类。2020/3/2251strftime()函数:•声明:strftime(format[,tuple])-string•说明:–参数format表示格式化日期的特殊字符。例如:“%Y-%m-%d”相当于“yyyy-MM-dd”.–参数tuple表示需要转换的时间,用元组存储。元组中的元素分别表示年、月、日、时、分、秒。–函数返回一个表示时间的字符串。2020/3/2252字符串到时间的转换步骤:•第一次转换:调用函数strptime()将字符串转换为一个元组。其声明为:strptime(string,format)-struct_time–函数返回一个存放时间的元组。•第二次转换:将表示年、月、日的3个变量传递给函数datetime()。
本文标题:第六章数据结构
链接地址:https://www.777doc.com/doc-4508831 .html