Python程序设计-第三章常用数据结构-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python程序设计-第三章常用数据结构-课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 程序设计 第三 常用 数据结构 课件
- 资源描述:
-
1、Python程序设计Programming in Python主讲:庞胜利2第三章 常用数据结构 数字 字符串 列表 元组 字典为什么使用内置对象 内置对象使程序更容易编写内置对象可以满足大部分的应用 内置对象往往比定制的数据结构更有效率速度方面,内置对象优化了用C实现的数据结构算法 内置对象是语言的标准的一部分数字 Python提供了常用的数字类型:整数、浮点数以及与之相关的语法和操作 允许使用八进制、十六进制常量 提供了复数类型 提供了无穷精度的长度类型(只要内存空间允许,可以增长成为任意位数的整数)数字常量数字数字常量常量1234,-24,0一般整数(c语言长整型)99999999999
2、9999999999999999L98888888888888888l长整型数(无限大小)1.23,3.14e-10,4E210,4.0e+210浮点数(C语言双精度浮点数)0177,0 x9ff八进制、十六进制3+4j,3.0+4.0j,3J复数常量内置数学工具和扩展 表达式操作符+、-、*、/、*内置数学函数pow、abs 公用模块random、math等 专业扩展NumPy矩阵、向量处理等变量和基本的表达式 变量就是用来记录程序中的信息,它的特点:变量像对象一样不需要声明变量在第一次赋值时创建变量在表达式中使用将被替换为他们的值变量在表达式中使用以前必须已经赋值数字的基本应用 a=3 b
3、=4 a+14 a-12 b*312 b/22 a%21 b*216 2.0*b16.0 c*2Traceback(most recent call last):File,line 1,in NameError:name c is not defined b/2+a5 b/(2.0+a)0.80000000000000004 print b/(2.0+a)0.8数字显示的格式 num=1/3.0 num0.33333333333333331 print num0.333333333333%e%num3.333333e-01%2.2f%num0.33 八进制、十六进制 将一个整数变为其八进制、十
4、六进制的数字字符串oct hex 将一个数字的字符串变换成一个整数,第二个参数用于指示变换后的数字的进制 用字符串格式表达式转换成八进制、十六进制的字符串 oct(64)0100 hex(64)0 x40 int(0100)100 int(0100,8)64 int(0 x40,16)64%o%x%X%(64,64,255)100 40 FF数学内置函数和内置模块 math模块-普通数学函数 cmath模块-处理复数的模块 acos,fsum,acosh,hypot,asin,isinf,asinh,isnan,atan,ldexp,atan2,log,atanh,log10,ceil,log
5、1p,copysign,modf,cos,pi,cosh,pow,degrees,radians,e,sin,exp,sinh,fabs,sqrt,factorial,tan,floor,tanh,fmod,trunc frexp,acos,log,acosh,log10,asin,phase,asinh,pi,atan,polar,atanh,rect,cos,sin,cosh,sinh,e,sqrt,exp,tan,isinf,tanh isnan,random模块 用于产生随机数 import random random.random()0.33452758558893336 rando
6、m.randint(1,10)5 random.choice(a,b,c)c字符串 在第二章已经简单介绍过字符串 简单回顾字符串常量:单引号双引号三引号转义自然字符串Unicode字符串字符串转义 转义字符同C语言的转义字符转义意义 newline行连续反斜线单引号”双引号a响铃b倒退f换页n新行转义意义r返回t水平制表符v垂直制表符uhhhhUnicode16位的十六进制值UhhhhUnicode32位的十六进制值xhh十六进制值0oo八进制值0Nullother不转义(保留)字符串基本操作+字符串合并*字符串重复 len(abc)3 abc+defabcdef abc defabcdef
7、hello*4hellohellohellohello abc+9Traceback(most recent call last):File,line 1,in TypeError:cannot concatenate str and int objects字符串基本操作 可以用for语句在一个字符串中进行迭代,并使用in表达式操作符进行成员关系的测试,这实际上是一种搜索 for循环指派了一个变量去获取一个序列其中的元素,并对每一个元素执行一个或多个语句,变量c相当于在字符串中步进的指针 s=hello for c in s:.print c,.h e l l o h in sTrue b i
8、n sFalse字符串索引和分片 字符串是字符的有序集合,能够通过其位置来获得他们的元素 Python中字符串中的字符是通过索引提取的 索引从0开始,但不同于C语言的是可以取负值,表示从末尾提取,最后一个是-1,前一个是-2,依次类推,认为是从结束处反向计数 s=spam s0s s1p s-1m s-2a字符串索引和分片 分片:从字符串中分离提取了一部分内容(子字符串);可以用于提取部分数据,分离出前、后缀等场合。当使用一对以冒号分隔的偏移索引字符串这样的序列对象时,Python就返回一个新的对象,其中包含了以这对偏移所标识的连续的内容。左边的偏移被取作是下边界(包含下边界在内),而右边的偏
9、移被认为是上边界(不包括上边界在内)。如果被省略上下边界的默认值分别对应为0和分片对象的长度 s=spam s1:3pa s1:pam s:-1spa s:spam索引和分片的总结 索引(si)获取特定偏移的元素第一个元素的偏移为0负偏移索引意味着从最后或右边反向进行计数s0获取第一个元素s-2获取倒数第二个元素 分片(si:j)提取对应的部分作为一个序列上边界并不包含在内分片的边界默认为0和序列的长度,如果没有给出的话s1:3获取从偏移为1开始,直到但不包含偏移为3的元素s1:获取了从偏移为1直到末尾之间的元素s:3获取从偏移为0直到但不包含偏移为3的元素s:-1获取从偏移为0直到但不包含最
10、后一个元素之间的元素s:获取从偏移为0直到末尾之间的所有元素分片的扩展形式 在Python2.3后,分片表达式增加了一个可选的第三个索引,用作步进选取 完整形式为:XI:J:K,这表示:索引(获取)对象X中元素,从偏移为I直到J-1,每隔K元素索引一次 K默认为1,这就是通常在切片中从左至右提取每个元素的原因 步进为负数表示将会从右至左进行而不是从左至右分片的扩展形式 X1:10:2会取出X中,偏移量1-9之间,间隔一个元素的元素,即获取偏移量为1、3、5、7、9 s=abcdefghijklmnop s1:10:2bdfhj s:2acegikmo s=0123456 s:0123456 s
11、:-16543210 s:-26420 s1:5:-1 s5:1:-15432 s9:-16543210 s6:-1:-1 s6:-2:-16字符串转化 Python不允许字符串和数字直接相加。这是有意设计的,因为+既能够进行加法运算也能够进行合并运算,这样的语法会变得模棱两可,因此,Python将其作为错误处理,在Python中,如果让操作变得复杂或含糊,就会避免这样的语法 15+1Traceback(most recent call last):File,line 1,in TypeError:cannot concatenate str and int objects字符串转化 如果用户
12、从文件或用户界面得到一个作为字符串的数字,怎么把这个字符串变为数字型呢?这就用到类型的转换函数 s=42 type(s)i=int(s)type(i)s1=str(i)type(s1)s=15 s+1Traceback(most recent call last):File,line 1,in TypeError:cannot concatenate str and int objects int(s)+116通过明确的手动类型转换再进行+操作 常用的类型转换还有字符串到浮点型的转换 之后会深入学习内置的eval函数,用于运行一个包含了Python表达式代码的字符串 s=15.0 float(
13、s)15.0 eval(12)12 eval(12+3)15字符串代码转换 单个字符可以通过ord函数转换为对应的ASCII数值(整数)chr函数相反,可以将一个整数转换为对应的字符 ord(a)97 chr(97)a修改字符串缺省情况下,字符串对象是“不可变序列”,不可变的意思是不能实地的修改一个字符串那如何改变一个字符串呢?这就要利用合并、分片这样的工具来建立并赋值给一个新的字符串;必要的话,可以将结果赋值给字符串最初的变量名 s=spam s0=xTraceback(most recent call last):File,line 1,in TypeError:str object do
14、es not support item assignment s=spam s=s+SPAM sspamSPAM s=s:4+OK!+s-1 sspamOK!M修改字符串 每修改一次字符串就生成一个新的字符串对象,这看起来好像会造成效率下降,其实,在Python内部会自动对不再使用的字符串进行垃圾回收,所以,新的对象重用了前面已有字符串的空间 Python的效率比我们想象的要好字符串格式化 Python可以用%操作符编写格式化的字符串 格式化字符串:1、在%操作符左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个嵌入的转换目标,都以%开头,如%d、%f等2、在%操作符右侧放置一个对象
15、(或多个,在括号内),这些对象会被插入到左侧格式化字符串的转换目标的位置上 bookcount=10 there are%d books%bookcountthere are 10 books字符串格式化%d%s%d you%(1,spam,4)1 spam 4 you%s-%s-%s%(42,3.1415926,1,2,3)42-3.1415926-1,2,3左侧的目标位置都要求是%s(字符串),这就表示要将右边的对象都转换为字符串另外要注意的是,格式化总会返回新的字符串作为结果,另外要注意的是,格式化总会返回新的字符串作为结果,而不是对左侧的字符串进行修改,由于字符串是不可变的;而不是对左
16、侧的字符串进行修改,由于字符串是不可变的;因此,如果需要的话,可以分配一个变量名来保持结果因此,如果需要的话,可以分配一个变量名来保持结果字符串格式化ConversionMeaningdSigned integer decimal.iSigned integer decimal.oSigned octal value.uObsolete type it is identical to d.xSigned hexadecimal(lowercase).XSigned hexadecimal(uppercase).eFloating point exponential format(lowerca
17、se).EFloating point exponential format(uppercase).fFloating point decimal format.FFloating point decimal format.gFloating point format.Uses lowercase exponential format if exponent is less than-4 or not less than precision,decimal format otherwise.GFloating point format.Uses uppercase exponential fo
展开阅读全文