Python科学计算与数据处理第一章ppt课件.ppt

上传人:飞****2 文档编号:33869550 上传时间:2022-08-12 格式:PPT 页数:128 大小:2.03MB
返回 下载 相关 举报
Python科学计算与数据处理第一章ppt课件.ppt_第1页
第1页 / 共128页
Python科学计算与数据处理第一章ppt课件.ppt_第2页
第2页 / 共128页
点击查看更多>>
资源描述

《Python科学计算与数据处理第一章ppt课件.ppt》由会员分享,可在线阅读,更多相关《Python科学计算与数据处理第一章ppt课件.ppt(128页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Python基础2本节目录o Python语言数据类型、运算符和表达式o Python的数据结构o Python的流程控制o Python函数o Python模块o Python的输入、输出o 异常处理3Python语言数据类型、运算符和表达式Python基础4Python语法基础o 文件类型o Python程序基本概念o Python运算符和表达式文件类型o 在交互模式下,想输入多少Python命令,就输入多少;每个命令在输入回车后都立即运行。o 只要不重新开启新的解释器,我们都在同一个会话中运行,因此,前面定义的变量,后面的语句都可以使用。o 一旦关闭解释器,会话中的所有变量和敲入的语句将

2、不复存在。5文件类型o 为了能够永久保存程序,并且能够被重复执行,我们必须要将代码保存在文件中,因此,就需要用编辑器来进行代码的编写,和其他编程语言一样,不同的Python的源代码可以直接执行而不需要像编译型语言一样编译成二进制代码。o Python源代码文件就是普通的文本文件,只要是能编辑文本文件的编辑器都可以用来编写Python程序,如notepad/word等。67文件类型 Python的文件类型分为三种:源代码、字节代码、优化代码。o 源代码 Python源代码文件,即py脚本文件,由 python.exe 解释,可在控制台下运行。 pyw脚本文件是图形用户接口(Graphical u

3、ser interface) 的源文件,专门用来开发图形界面,由 pythonw.exe 解释运行。8文件类型o 字节代码 Python源文件经过编译后生成的pyc文件,即字节文件。它与平台无关,所以可以移植到其他系统上。下面这段脚本可以把 example.py 编译为 example.pyc#compile py to pycimport py_compilepy_pile(example.py)运行此脚本即可得到example.pyc 文件类型 不能在python的交互界面中运行。只能够在DOS屏幕上运行:python example.pyc 在程序中调用可以用: os.system (p

4、ython example.pyc )o 优化代码 经过优化的源文件生成扩展名为pyo的文件,即优化文件。下面步骤可以把 example.py 编译为 example.pyon 启动命令行窗口,进入example.py所在目录:D: cd D:pathexamples9文件类型n 在命令行中输入 python -O -m py_compile example.py参数 -O 表示生成优化代码参数 -m 表示导入的 py_compile 模块作为脚本运行。编译 example.pyo 需要调用 py_compile 模块中的 compile() 方法参数 example.py 是待编译的文件名。

5、 能够在DOS屏幕上运行:python example.pyo10文件类型o 当程序比较大的时候,可以将程序划分成多个模块编写,每个模块用一个文件保存。o 模块之间可以通过导入互相调用(import)。o 模块也可以导入库中的其他模块。 Python是以模块进行重用的,模块中可以包括类、函数、变量等。11编码风格o 以“#”号开头的内容为注释,python解释器会忽略该行内容。 o 在Python中是以缩进(indent)来区分程序功能块的,缩进的长度不受限制,但就一个功能块来讲,最好保持一致的缩进量。 n 可以使用空格、Tab键等,但是最好保持一致o 如果一行中有多条语句,语句间要以分号(;

6、)分隔。12Python程序基本概念o 常量n 一个字面意义上的常量的例子是如同5、1.23、9.25e-3这样的 数,或者如同This is a string、“Its a string!”这样的字符串。n 它们被称作字面意义上的,因为它们具备 字面 的意义按照它们的字面意义使用它们的值。数2总是代表它自己,而不会是别的什么东西它是一个常量,因为不能改变它的值。因此,所有这些都被称为字面意义上的常量。 13Python程序基本概念o 数数 在Python中有4种类型的数整数、长整数、浮点数和复数。n 2是一个整数的例子。 n 长整数不过是大一些的整数。 n 3.23和52.3E-4是浮点数的

7、例子。E标记表示10的幂。在这里,52.3E-4表 示52.3 * 10-4。 n (-5+4j)和(2.3-4.6j)是复数的例子14Python程序基本概念o 字符串字符串 字符串是 字符的序列字符的序列 。 C语言中用字符数组表示,如char str20 = “hello”. Python中的字符串可以如下表示:n 使用单引号(使用单引号():):可以用单引号指示字符串,就如同 Hello world 这样。所有的空白,即空格和制表符都照原样保留。 n 使用双引号(使用双引号(“):在双引号中的字符串与单引号中的字符串的使用完全相同,例如”Whats your name?“。15Pyth

8、on程序基本概念n 使用三引号(使用三引号(或或“”“):利用三引号,可):利用三引号,可以指示一个以指示一个多行多行的字符串,可以在三引号中的字符串,可以在三引号中自由的使用单引号和双引号自由的使用单引号和双引号,如:16这是一个多行的字符串,你可以写入任意字符,甚至是单引号和双引号Python程序基本概念n 转义符转义符 o 假设想要在一个字符串中包含一个单引号(),那么该怎么指示这个字符串?例如,这个字符串是Whats your name?。o 肯定不能用Whats your name?来指示它,因为Python会弄不明白这个字符串从何处开始,何处结束。 所以,需要指明单引号而不是字符串

9、的结尾。可以通过 转义符 来完成这个任务。用来指示单引号 注意这个反斜杠。现在可以把字符串表示为Whats your name?。17Python程序基本概念18o 另一个表示这个特别的字符串的方法是“Whats your name?”,即用双引号。类似地,要在双引号字符串中 使用双引号本身的时候,也可以借助于转义符。另外,可以用转义符来指示反斜杠本身。o 值得注意的一件事是,在一个字符串中,行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行.This is the first sentence.This is the second sentence. This is the f

10、irst sentence. This is the second sentence. Python程序基本概念19n 自然字符串自然字符串 o 如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r或R来指定。例如rNewlines are indicated by n“o 比较下面两句话的区别:print Newlines are indicated by nhello print rNewlines are indicated by nhelloPython程序基本概念20n Unicode字符串字符串o Unicode是书

11、写国际文本的标准方法。如果想要用中文、日文、韩文等写文本,那么需要有一个支持Unicode的编辑器。类似地,Python允许处理Unicode文本只需要在字符串前加上前缀u或U。例如,uThis is a Unicode string.。o 在处理文本文件的时候尽量使用Unicode编码,特别是文件中含有用非英语的语言写的文本。Python程序基本概念21n 字符串是不可变的字符串是不可变的 这意味着一旦创造了一个字符串,就不能再改变它了。虽然这看起来像是一件坏事,但实际上它不是。我们将会在后面的程序中看到为什么说它不是一个缺点。n 级连字符串级连字符串 如果把两个字符串按字面意义相邻放着,他

12、们会被Python自动级连。例如,Whats your name?会 被自动转为Whats your name?Whats your name?Whats your name?Whats + your name? Python程序基本概念o 变量变量n 仅仅使用字面意义上的常量很快就会不能满足我们的需求我们需要一种既可以储存信息又可以对它们进行操作(改变它的内容)的方法。这是为什么要引入 变量 。n 变量的值可以变化,即可以使用变量存储任何东西。变量只是计算机中存储信息的一部分内存。与字面意义上的常量不同,需要一些能够访问这些变量的方法,因此要给变量命名。 22Python程序基本概念o 标识

13、符的命名标识符的命名 变量是标识符的例子。 标识符 是用来标识 某样东西 的名字。在命名标识符的时候,要遵循这些规则:n 标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线( _ )。n 标识符名称的其他部分可以由字母(大写或小写)、下划线( _ )或数字(0-9)组成。23Python程序基本概念n 标识符名称是对大小写敏感的。例如,myname和myName不是不是一个标识符。注意前者中的小写n和后者中的大写N。n有效 标识符名称的例子有i、_my_name、name_23和a1b2_c3。n无效 标识符名称的例子有2things、this is spaced out和my

14、-name。24Python程序基本概念o 标识符的命名标识符的命名- -关键字关键字25anddelfromnotwhileaselifglobalorwithassertelseifpassyieldbreakexceptimportprintclassexecinraisecontinuefinallyisreturndefforlambdatryPython程序基本概念o 标识符的命名标识符的命名-类保留类保留n _*:from module import *将不被导出。交互环境最后表达式的值。n _*_:系统定义的名字n _*:类的私有变量或方法26Python程序基本概念o 数据类

15、型数据类型n 每个变量都有自己的类型,可以处理不同类型的值,称为数据类型数据类型。n 基本的类型是数和字符串,我们已经讨论过它们了。在后面的章节里面,我们会研究怎么用类创造我们自己的类型。n Python中一切都是对象,包括字符串和数。27Python程序基本概念o 对象对象 Python把在程序中用到的任何东西都称为 对象。Python是完全面向对象的语言,任何变量都是对象,甚至包括执行的代码:函数。28# Filename : var.pyi = 5print ii = i + 1print is = This is a multi-line string.This is the seco

16、nd line.print s Python程序基本概念o 逻辑行与物理行逻辑行与物理行n 物理行是在编写程序时所 看见 的。逻辑行是Python 看见 的单个语句。Python假定每个 物 理行 对应一个 逻辑行 n Python希望每行都只使用一个语句,这样使得代码更加易读 n 如果想要在一个物理行中使用多于一个逻辑行,那么需要使用分号(;)来特别地标明这种用法。分号表示一个逻辑行/语句的结束。例如: 29i=5print ii=5;print i;i=5;print iPython程序基本概念n 强烈建议强烈建议坚持在每个物理行只写一句逻辑行在每个物理行只写一句逻辑行。n 仅仅当逻辑行太

17、长的时候,在多于一个物理行写一个逻辑行。这些都是为了尽可能避免使用分号,从而让代码更加易读。 n 下面是一个在多个物理行中写一个逻辑行的例子。它被称为明确的行连接明确的行连接。 30s = This is a string. This continues the string.print s This is a string. This continues the string. Python程序基本概念n 有一种暗示的假设,可以不需要使用反斜杠。这种情况出现在逻辑行中使用了圆括号、方括号或波形括号的时候。这被称为暗示的行连接暗示的行连接.。 31a = 100, 200print aPyth

18、on程序基本概念o 缩进缩进n 空白在Python中是重要的。事实上行首的行首的空白是重要的空白是重要的。它称为缩进缩进。在逻辑行 首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。n 这意味着同一层次的语句必须必须有相同的缩进。每一组这样的语句称为一个块块。错误的缩进会引发错误 n 不同于C/C+、Java用的是32i = 5 print Value is, i # Error! Notice a single space at the start of the lineprint I repeat, the value is, i Python程序基本概念n 如何缩

19、进 不要不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。强烈建议 在每个缩进层次使用 单个制表符 或 两个或四个空格 。选择这三种缩进风格之一。更加重要的是,选择一种风格,然后一贯地一贯地使用它,即 只 使用这一种风格。33Python程序基本概念n Python迫使程序员写成统一、整齐并且具有可读性程序的主要方式之一,这就意味着必须根据程序的逻辑结构,以垂直对齐的方式来组织程序代码,结果就是让程序更一致,并具有可读性,因而具备了重用性和可维护性,对自己和他人都是如此。 34if (x) if (y) statements;else statements;if x:

20、 if y: statementselse: statementsPython程序基本概念o Python程序结构1. 程序由模块构成2. 模块包含语句3. 语句包含表达式4. 表达式建立并处理对象 Python语法实质上是有语句和表达式组成的。表达式处理对象并嵌套在语句中。语句编程实现程序操作中更大的逻辑关系。此外,语句还是对象生成的地方,有些语句会生成新的对象类型(函数、类等)。语句总是存在于模块中,而模块本身则又是由语句来管理的。35Python程序基本概念o Python语法n Python增加了什么 新的语法成分冒号(:)。所有的复合语句(语句中嵌套了语句)都有相同的一般形式,就是首

21、行以冒号结尾,首行下一行嵌套的代码往往按缩进的格式书写。n Python删除了什么o 括号是可选的o 终止行就是终止语句(分号)o 缩进的结束就是代码块的结束()36if (x y) x = 1; y = 2;if x y: x = 1 y = 2运算符与表达式o 编写的大多数语句(逻辑行)都包含表达表达式式。一个简单的表达式例子如2 + 3。一 个表达式可以分解为运算符和操作数。o运算符 的功能是完成某件事,它们由如+这样的符号或者其他特定的关键字表示。运算符需要数据来进行运算,这样的数据被称为 操作数 。在这个例子中,2和3是操作数。o 在Python中,表达式可以作为语句,但表达式结果不

22、会存储。37运算符及其用法 38运算符运算符名称名称说明说明例子例子+加两个对象相加3 + 5得到8。a + b得到ab。-减得到负数或是一个数减去另一个数-5.2得到一个负数。50 - 24得到26。*乘两个数相乘或是返回一个被重复若干次的字符串2 * 3得到6。la * 3得到lalala。*幂返回x的y次幂3 * 4得到81(即3 * 3 * 3 * 3)/除x除以y4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333/取整除返回商的整数部分4 / 3.0得到1.0%取模返回除法的余数8%3得到2。-25.5%2.25得到1.5左移把一个

23、数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1)2 右移把一个数的比特向右移一定数目11 1得到5。11按比特表示为1011,向右移动1比特后得到101,即十进制的5。运算符及其用法39运算符运算符名称名称说明说明例子例子&按位与数的按位与5 & 3得到1。|按位或数的按位或5 | 3得到7。按位异或数的按位异或 5 3得到6按位翻转x的按位翻转是-(x+1)5得到6。运算符及其用法40运算符运算符名称名称说明说明例子例子小于返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。5 3返回0(即

24、False)而3 5返回1(即True)。比较可以被任意连接:3 5 大于返回x是否大于y5 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。=小于等于返回x是否小于等于yx = 3; y = 6; x =大于等于返回x是否大于等于yx = 4; y = 3; x = y返回True。=等于比较对象是否相等x = 2; y = 2; x = y返回True。x = str; y = stR; x = y返回False。x = str; y = str; x = y返回True。!=不等于比较两个对象是否不相等x = 2; y = 3; x !

25、= y返回True。运算符及其用法41运算符运算符名称名称说明说明例子例子not布尔“非”如果x为True,返回False。如果x为False,它返回True。x = True; not y返回False。and布尔“与”如果x为False,x and y返回False,否则它返回y的计算值。x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象 称为短路计算。or布尔“或”如果x是True,它返回True,否则它返回y的计算值。x = True; y

26、 = False; x or y返回True。运算符优先级运算符优先级o 如果有一个如2 + 3 * 4那样的表达式,是先做加法呢,还是先做乘法? o 应当先做乘法这意味着乘法运算符的优先级高于加法运算符 。o 下面给出Python运算符优先级。 42运算符优先级由高向低43运算符运算符描述描述expr字符串转换key:expr,.字典expr1,expr2.列表(expr1,expr2,.)元组function(expr,.)函数调用xindex:index切片xindex下标索引取值x.attribute属性引用x按位取反+x,-x正,负x*y幂x*y,x/y,x%y乘,除,取模运算符运算

27、符描述描述x+y,x-y加,减xy移位x&y按位与xy按位异或x|y按位或xy,x=y,xy比较x is y,x is not y等同测试x in y,x not in y成员判断not x逻辑否x and y逻辑与x or y逻辑或lambda arg,.:exprLambda匿名函数 运算符优先级运算符优先级o 建议使用圆括号来分组运算符和操作数,以便能够明确地指出运算的先后顺序,使程序尽可能地易读。o 例如,2 + (3 * 4)显然比2 + 3 * 4清晰。与此同时,圆括号也应该正确使用,而不应该用得过滥,比如:(2 + (3 + 4)。 44运算符优先级运算符优先级o 计算顺序计算顺

28、序n 默认地,运算符优先级表决定了哪个运算符在别的运算符之前计算。然而,如果想要改变它们的计算顺序,可以使用圆括号。例如,想要在一个表达式中让加法在乘法之前计算,那么就可以写成类似(2 + 3) * 4的样子。o 结合规律结合规律n 运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算。例如,2 + 3 + 4被计算成(2 + 3) + 4。一些如赋值运算符那样的运算符是由右向左结合的,即a = b = c被处理为a = (b = c)。45真值表46对象对象/ /常量常量值值假string真0假=1真 import sys print sys.maxint214748364

29、7数字常量54数字数字常量常量1234,-24,0一般整数(c语言长整型)999999999999999999999999999L98888888888888888l长整型数(无限大小)1.23,3.14e-10,4E210,4.0e+210浮点数(C语言双精度浮点数)0177,0 x9ff八进制、十六进制3+4j,3.0+4.0j,3J复数常量内置数学工具和扩展o 表达式操作符 +、-、*、/、*o 内置数学函数 pow、abso 公用模块 random、math等o 专业扩展NumPy 矩阵、向量处理等55数字的基本应用56 a = 3 b = 4 a + 14 a - 12 b * 31

30、2 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数字显示的格式57 num = 1 / 3.0 num0.33333333333333331 print num0.333333333333 %e%num3.333333e-01 %2.2f%num0.33 数学内置函数和内置模块

31、o math模块-普通数学函数o cmath模块-处理复数的模块58 acos, fsum, acosh, hypot, asin, isinf, asinh, isnan, atan, ldexp, atan2, log, atanh, log10, ceil, log1p, 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, as

32、in, phase, asinh, pi, atan, polar, atanh, rect, cos, sin, cosh, sinh, e, sqrt, exp, tan, isinf, tanh isnan,数学内置函数和内置模块o random模块 用于产生随机数59 import random random.random()0.33452758558893336 random.randint(1, 10)5 random.choice(a, b, c)c字符串的定义60o 字符串在python被看成是单个字符的序列,具有序列对象的特殊功能,字符串是固定的,不可变的。 o 可在字符串中

33、使用单引号和双引号,注意要搭配。如boy, ”girl”等。o 字符串内部的一个反斜杠“”可允许把字符串放于多行o 也可以使用三个或”使字符串跨行。o 使用“*”号重复字符串,如:hello*3hellohellohello a = 12345. 67890 print a1234567890 a=hello*3 print ahellohellohello a=123456. 7890 print a1234567890转义符61转义字符转义字符描述描述反斜杠符号单引号双引号a响铃b退格(Backspace)e转义000空v纵向制表符t横向制表符r回车转义字符转义字符描述描述n换行(在行尾时

34、)续行符f换页oyy八进制数yy代表的字符,例如:o12代表换行xyy十进制数yy代表的字符,例如:x0a代表换行other其它的字符以普通格式输出 不想让转义字符生效时,用r和R来定义原始字符串。如:print rtr tr字符串基本操作o +字符串合并o *字符串重复62 len(abc)3 abc+defabcdef abc defabcdef hello*4hellohellohellohello abc+9Traceback (most recent call last): File , line 1, in TypeError: cannot concatenate str and

35、 int objects字符串基本操作o 可以用for语句在一个字符串中进行迭代,并使用in表达式操作符进行成员关系的测试,这实际上是一种搜索。o for循环指派了一个变量去获取一个序列其中的元素,并对每一个元素执行一个或多个语句,变量c相当于在字符串中步进的指针。63 s = hello for c in s:. print c,. h e l l o h in sTrue b in sFalse字符串索引和分片o 字符串是字符的有序集合,能够通过其位置来获得他们的元素o Python中字符串中的字符是通过索引提取的o 索引从0开始,但不同于C语言的是可以取负值,表示从末尾提取,最后一个是-

36、1,前一个是-2,依次类推,认为是从结束处反向计数64 s = spam s0s s1p s-1m s-2a字符串索引和分片o 分片:从字符串中分离提取了一部分内容(子字符串);可以用于提取部分数据,分离出前、后缀等场合。o 当使用一对以冒号分隔的偏移索引字符串这样的序列对象时,Python就返回一个新的对象,其中包含了以这对偏移所标识的连续的内容。o 左边的偏移被取作是下边界(包含下边界在内),而右边的偏移被认为是上边界(不包括上边界在内)。o 如果被省略上下边界的默认值分别对应为0和分片对象的长度。65 s = spam s1:3pa s1:pam s:-1spa s:spam索引和分片的

37、总结o 索引(si)获取特定偏移的元素n 第一个元素的偏移为0n 负偏移索引意味着从最后或右边反向进行计数n s0获取第一个元素n s-2获取倒数第二个元素66索引和分片的总结o 分片(si:j)提取对应的部分作为一个序列n 上边界并不包含在内n 分片的边界默认为0和序列的长度,如果没有给出的话n s1:3获取从偏移为1开始,直到但不包含偏移为3的元素n s1:获取了从偏移为1直到末尾之间的元素n s:3获取从偏移为0直到但不包含偏移为3的元素n s:-1获取从偏移为0直到但不包含最后一个元素之间的元素n s:获取从偏移为0直到末尾之间的所有元素67分片的扩展形式o 在Python2.3后,分

38、片表达式增加了一个可选的第三个索引,用作步进选取o 完整形式为:XI:J:KXI:J:K,这表示:索引(获取)对象X X中元素,从偏移为I I直到J-1J-1,每隔K K元素索引一次o K K默认为1,这就是通常在切片中从左至右提取每个元素的原因o 步进为负数表示将会从右至左进行而不是从左至右68分片的扩展形式 X1:10:2会取出X中,偏移量1-9之间,间隔一个元素的元素,即获取偏移量为1、3、5、7、969 s = abcdefghijklmnop s1:10:2bdfhj s:2acegikmo s = 0123456 s:0123456 s:-16543210 s:-26420 s1:

39、5:-1 s5:1:-15432 s9:-16543210 s6:-1:-1 s6:-2:-16字符串转化o Python不允许字符串和数字直接相加。o 这是有意设计的,因为+ +既能够进行加法运算也能够进行合并运算,这样的语法会变得模棱两可,因此,Python将其作为错误处理,在Python中,如果让操作变得复杂或含糊,就会避免这样的语法。70 15 + 1Traceback (most recent call last): File , line 1, in TypeError: cannot concatenate str and int objects字符串转化o 如果用户从文件或用户

40、界面得到一个作为字符串的数字,怎么把这个字符串变为数字型呢?这就用到类型的转换函数71 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通过明确的手动类型转换再进行+操作字符串转化o 常用的类型转换还有字符串到浮点型的转换。o 之后会深入学习内置的eval函数,用于运行一个包含了Py

41、thon表达式代码的字符串。72 s = 15.0 float(s)15.0 eval(12)12 eval(12 + 3)15字符串代码转换o 单个字符可以通过ord函数转换为对应的ASCII数值(整数)。o chr函数相反,可以将一个整数转换为对应的字符。73 ord(a)97 chr(97)a修改字符串o 缺省情况下,字符串对象是“不可变序列”,不可变的意思是不能实地的修改一个字符串。o 那如何改变一个字符串呢?这就要利用合并、分片这样的工具来建立并赋值给一个新的字符串;必要的话,可以将结果赋值给字符串最初的变量名。74 s = spam s0 = xTraceback (most re

42、cent call last): File , line 1, in TypeError: str object does not support item assignment s = spam s = s + SPAM sspamSPAM s = s:4 + OK! + s-1 sspamOK!M修改字符串o 每修改一次字符串就生成一个新的字符串对象,这看起来好像会造成效率下降,其实,在Python内部会自动对不再使用的字符串进行垃圾回收,所以,新的对象重用了前面已有字符串的空间。o Python的效率比我们想象的要好。75字符串格式化o Python可以用%操作符编写格式化的字符串o 格

43、式化字符串:n 1、在%操作符左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个嵌入的转换目标,都以%开头,如%d、%f等n 2、在%操作符右侧放置一个对象(或多个,在括号内),这些对象会被插入到左侧格式化字符串的转换目标的位置上76 bookcount = 10 there are %d books%bookcountthere are 10 books字符串格式化77 %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左侧的目标位置都

44、要求是%s(字符串),这就表示要将右边的对象都转换为字符串另外要注意的是,格式化总会返回新的字符串作为结果,另外要注意的是,格式化总会返回新的字符串作为结果,而不是对左侧的字符串进行修改,由于字符串是不可变的;而不是对左侧的字符串进行修改,由于字符串是不可变的;因此,如果需要的话,可以分配一个变量名来保持结果因此,如果需要的话,可以分配一个变量名来保持结果List列表 78o 列表是Python中最具灵活性的有序集合对象类型。和字符串不同的是,列表可以包含任何种类的对象:数字、字符串、自定义对象甚至其他列表。o 似与其他高级语言的数组列表是可变对象,支持在原处修改,可以通过指定的偏移值和分片、

45、列表方法调用、删除语句等方法实现。列表的主要性质79o 任意对象的有序集合 从功能是看,列表就是收集其他对象的地方,可以他们看成数组;同时,列表所包含的每一项都保持了从左到右的位置顺序(也就是说,它们是序列)。o 通过偏移读取 和字符串一样,可以通过列表对象的偏移对其进行索引,从而读取对象的一部分内容。当然也可以执行诸如分片和合并之类的操作。列表的主要性质80o 可变长度、异构以及任意嵌套和字符串不同,列表可以根据需要增长或缩短(长度可变),并且可以包含任何类型的对象,并支持任意的嵌套。o 可变序列列表支持在原处的修改,也可以响应所有针对字符串序列的操作,如索引、分片以及合并。实际上,序列操作

46、在列表与字符串中工作方式相同。唯一区别是:当合并或分片应用于列表时,返回新的列表而不是新的字符串。当然,支持某些字符串不支持的操作。常用列表常量和操作81操作解释L1=一个空的列表L2 = 0, 1, 2, 3四元素列表L3 = abc,10,def, ghi嵌套列表L2i索引L3ij索引的索引L2i:j分片len(L2)求长度L1 + L2合并L2 * 3重复列表的方法o append(x) 把一个元素添加到列表的结尾,相当于alen(a): = xo extend(L) 通过添加指定列表的所有元素来扩充列表,相当于alen(a):=Lo insert(i,x) 在指定位置插入一个元素。第一

47、个参数是准备插入到其前面的那个元素的索引,例如a.insert(0,x)会插入到整个链表之前,而a.insert(len(a), x)相当于a.append(x)。82列表的方法o remove(x) 删除链表中值为x的第一个元素。如果没有这样的元素,就会返回一个错误。o pop(i) 从链表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从链表中被删除。(方法中i两边的方括号表示这个参数是可选的,而不是要求输入一对方括号,会经常在Python库参考手册中遇到这样的标记。)83列表的方法o index(x) 返回链表中第一个值为x的元素的索引。如果没有

48、匹配的元素就会返回一个错误。o count(x) 返回x在链表中出现的次数。o sort() 对链表中的元素进行适当的排序。o reverse() 倒排链表中的元素。84列表的方法85 a = 66.6, 333, 333, 1, 1234.5 print a.count(333), a.count(66.6), a.count(x)2 1 0 a.insert(2, -1) a.append(333) a66.599999999999994, 333, -1, 333, 1, 1234.5, 333 a.index(333)1 a.remove(333) a66.59999999999999

49、4, -1, 333, 1, 1234.5, 333 a.reverse() a333, 1234.5, 1, 333, -1, 66.599999999999994 a.sort() a-1, 1, 66.599999999999994, 333, 333, 1234.5List对象的操作86方法方法描述描述append(x)在列表尾部追加单个对象x。使用多个参数会引起异常。count(x)返回对象x在列表中出现的次数。extend(L)将列表L中的表项添加到列表中。返回None。Index(x)返回列表中匹配对象x的第一个列表项的索引。无匹配元素时产生异常。insert(i,x)在索引为i

50、的元素前插入对象x。如list.insert(0,x)在第一项前插入对象。返回None。pop(x)删除列表中索引为x的表项,并返回该表项的值。若未指定索引,pop返回列表最后一项。sort()对列表排序,返回none。bisect模块可用于排序列表项的添加和删除。 remove(x)删除列表中匹配对象x的第一个元素。匹配元素时产生异常。返回None。reverse()颠倒列表元素的顺序。help(list)Help(list.count)把列表当作堆栈使用o 链表方法使得链表可以很方便的做为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用append()

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁