第二章数据类型与结构 与其他编程语言相比,Pyho的数据类型非常丰富,如数值和序列。序列是一块用来 存储多个值的连续内存空间, 维数组等,与其他语言 功能强大、提高 效率 它分为列表、元组 字典 和集合。本章详细讲解了数值的类型、变量的命名规则、运算符与表达式和字符串及方法 在此基础上通过案例介绍了序列的用法,如序列的创建、操作和刑除等,以及实际应用广 泛的内置函数、列表推导式、切片操作、生成器推导式、序列解包等基本知识。 2.1数值 Python具有强大的数值计算能力,在交互式IDLE模式下,可以像使用计算器一样进 行加、减、乘、除和函数运算,比如: >2019-1929 >>>4/3*3.14159*6371**2#注意,4/3这里结果为1.3333333333333333,地珠半径6371km 170021347.02558663 >>4.03.0*3.14159*6371**2#注意,结果与上面相同 170021347.02558663 import math #导入mah模块 >>>math sin(3.141592)#调用math模块中sin函数,S1n其=1 09999999999991198 而且yhon数值的表示范围远远超过其他语言(如C、C#等)。例如: 8888888888888888888 88888888888*2大数计算 7901234567901234567901234567901234567901234567901234566320987654320987654320987654320987 6543209876543209876544 2.1.1数值类型 Python数值类型主要有整数、浮点数和复数。 1、整数型 整数型主要有: (1)十进制整数,如0、-1、9、123。 (2)二进制整数以0b开头,如0b1111111、0b10101010。例如: >0b1111111#对应十进制127 127
第二章 数据类型与结构 与其他编程语言相比,Python 的数据类型非常丰富,如数值和序列。序列是一块用来 存储多个值的连续内存空间,类似于其他高级语言中的一维、二维数组等,与其他语言不 同的是 Python 语言中的序列类型运用灵活、功能强大、提高效率,它分为列表、元组、字典 和集合。本章详细讲解了数值的类型、变量的命名规则、运算符与表达式和字符串及方法, 在此基础上通过案例介绍了序列的用法,如序列的创建、操作和删除等,以及实际应用广 泛的内置函数、列表推导式、切片操作、生成器推导式、序列解包等基本知识。 2.1 数值 Python 具有强大的数值计算能力,在交互式 IDLE 模式下,可以像使用计算器一样进 行加、减、乘、除和函数运算,比如: >>>2019-1929 90 >>> 4/3*3.14159*6371**2 #注意,4/3 这里结果为 1.3333333333333333,地球半径 6371km 170021347.02558663 >>> 4.0/3.0*3.14159*6371**2 #注意,结果与上面相同 170021347.02558663 >>> import math #导入 math 模块 >>>math.sin(3.14159/2) #调用 math 模块中 sin 函数, sin 1 2 0.9999999999991198 而且 Python 数值的表示范围远远超过其他语言(如 C、C#等)。例如: >>> 8888888888888888888888888888888888888888888888888888888**2 #大数计算 7901234567901234567901234567901234567901234567901234566320987654320987654320987654320987 6543209876543209876544 2.1.1 数值类型 Python 数值类型主要有整数、浮点数和复数。 1、 整数型 整数型主要有: (1) 十进制整数,如 0、-1、9、123。 (2) 二进制整数以 0b 开头,如 0b1111111、0b10101010。例如: >>> 0b1111111 #对应十进制 127 127
>0b10101010#对应十进制170 170 (3)八进制整数以00或00开头,如00777,0076543210,字母0大小写不分。例如 >00777 5 >>>00777 511 (4)十六进制整数以0x开头,如Ox10、OxFFFF,字线x大小写不分。例如: >0x101 15 >0X101 257 >0XFFFF 65535 2 浮点型 浮点型也称小数,如314159、618、1.0、52、02e-5. 3、复数型 Python中的复数与数学中的复数的形式完全一致,由实部和虚部构成的,并且使用j 和」来表示虚部。复数可以直接进行加、减、乘、除、共轭等运算。如: 3+4*(5-6 #个复数相乘 39+2 >>(3+4们.conjugate0#取复数共拒 (340 >>>(3+4i*(3+4i).coniugate() #求复数的模的平方 5+0 或者 >>>complex(3,4) #由3、4生成复数 (3+4 >>>abs(3+4j) #求复数的模 50 >(3+4M5-6 #求两个复数相院 (-0.14754098360655735+0.629508196721312 >>(3+4i).ral#取复数实部 30 >(仔+4j).imag#取复数复部 40 2.1.2变量 Python与其他语言不同,事先不需要声明变量名及其类型,直接赋值即可创建各种类 型的变量,例如: >alnt=3 #创建整查岳t,并赋值3 >>bF1oat=3.14 #创建实数变量bFl0a,并威值3.14
>>> 0b10101010 #对应十进制 170 170 (3) 八进制整数以 0o 或 0O 开头,如 0o777,0O76543210,字母 o 大小写不分。例如: >>> 0o777 511 >>> 0O777 511 (4) 十六进制整数以 0x 开头,如 0x10、0xFFFF,字线 x 大小写不分。例如: >>> 0x101 257 >>> 0X101 257 >>> 0xFFFF 65535 2、 浮点型 浮点型也称小数,如 3.14159、.618、1.0、5e2、0.2e-5。 3、 复数型 Python 中的复数与数学中的复数的形式完全一致,由实部和虚部构成的,并且使用 j 和 J 来表示虚部。复数可以直接进行加、减、乘、除、共轭等运算。如: >>> (3+4j)*(5-6J) #两个复数相乘 39+2j >>> (3+4j).conjugate() #取复数共轭 (3-4j) >>> (3+4j)*(3+4j).conjugate() #求复数的模的平方 (25+0j) 或者: >>> complex(3,4) #由 3、4 生成复数 (3+4j) >>> abs(3+4j) #求复数的模 5.0 >>> (3+4j)/(5-6j) #求两个复数相除 (-0.14754098360655735+0.6229508196721312j) >>> (3+4j).real #取复数实部 3.0 >>> (3+4j).imag #取复数复部 4.0 2.1.2 变量 Python 与其他语言不同,事先不需要声明变量名及其类型,直接赋值即可创建各种类 型的变量,例如: >>> aInt=3 #创建整数变量 aInt,并赋值 3 >>> bFloat=3.14 #创建实数变量 bFloat,并赋值 3.14
>>>cChar-a' #创建字符变量cChar,并赋值’a' ≥>dString=雄安新区2019.04.0' #创建字符串变量dString,并赋值'煌安新区2019-04-0r >>e=3+14i #创建复数变量eComplex,.并赋值3+14 或: >eComplex-complex(3,4) #用函数生成复数 >>>eComplex (3+40 在DLE交互模式下,最后显示的表达式被指定给变量“”,这意味着,当你用 Python作简单运算时,可以为继续下面的计算提供方便,例如:计算(1+2+3+4+5)*6 >1+2+3+4+5 15 >6 90 再比如: >>atc=4.5100 principal-999 >>principal*rate 449.955 >>principa+._保存了表达式principal*rate的值 10448.955 >>ound2)#取小数点后两包 10448.95 Python解释器根据赋值或运算来自动推断变量类型。例2-1显示上述定义变量的类型 实例2-l类ype中函数ype(object)->the object's type返回对象所属的类,下面利用ype函 数查看上述定义的变量所属的类。 int #整数类 >>>type(bFloat) float #实数类 >>>type(cChar) #字符串类 type(dString) str #字符串类 >>>type(cComplex) complex #复数类 提示:与其他程序设计语言不同,Python认定字符和字符串是一样的,所以上面 ypc(cChar)返 的类型是宇符串型 例2-2运用instance()方法来判断数值(对象)是否是指定的所属类 实例2-2利用内置函数isinstance(()判断对象是否为特定数据类型。 >>isinstance(3.14,int)#判断对象是否是int类型 False isinstance(3.14,float) 4判断新对象是否是loat类型 >>>isinstance(维安'.str) #判断对象是否是s类型
>>> cChar='a' #创建字符变量 cChar,并赋值’a’ >>> dString='雄安新区 2019-04-01' #创建字符串变量 dString,并赋值'雄安新区 2019-04-01' >>> e=3+14j #创建复数变量 eComplex,并赋值 3+14j 或: >>> eComplex=complex(3, 4) #用函数生成复数 >>> eComplex (3+4j) 在 IDLE 交互模式下,最后显示的表达式被指定给变量“_”,这意味着,当你用 Python 作简单运算时,可以为继续下面的计算提供方便,例如:计算(1+2+3+4+5)*6 >>> 1+2+3+4+5 15 >>> _*6 90 再比如: >>> rate=4.5/100 >>> principal=9999 >>> principal*rate 449.955 >>> principal+_ #_保存了表达式 principal*rate 的值 10448.955 >>> round(_,2) #取小数点后两位 10448.95 Python 解释器根据赋值或运算来自动推断变量类型。例 2-1 显示上述定义变量的类型。 实例 2-1 类 type 中函数 type(object) -> the object's type 返回对象所属的类,下面利用 type 函 数查看上述定义的变量所属的类。 >>> type(aInt) int #整数类 >>>type(bFloat) float #实数类 >>>type(cChar) str #字符串类 >>> type(dString) str #字符串类 >>>type(eComplex) complex #复数类 提示:与其他程序设计语 言不同,Python 认定字符和字符串是一样的,所以上面 type(cChar)返回的类型是字符串型。 例 2-2 运用 instance()方法来判断数值(对象)是否是指定的所属类。 实例 2-2 利用内置函数 isinstance( )判断对象是否为特定数据类型。 >>> isinstance(3.14,int) #判断对象是否是 int 类型 False >>> isinstance(3.14,float) #判断对象是否是 float 类型 True >>> isinstance('雄安',str) #判断对象是否是 str 类型
True Python变量内存分配方法与其他语言也不同,比如在C语言中,通过语句“ita”定 义整数变量日后,系统为a在内存中分配地址,该地址不会随若赋值改变,即师讨“=1” 和“a=2”可以政变变量a的值,但不改变变量a在内存中的地址。Python则不同,采用的 是基于值的内存管理方式。如定义3后,系统为3分配了内存地址,变量a指向该地址, 如果再定义b=3,那么变量b的地址也是指向3的地址,变量a与变量b指向同一地址,如 图2-1所示。通过内置函数d)可以查看变量所指值的内存地址(也为变量地址)。 实例2-3利用d()函数显示变量所指值的内存地址。 id(a) #返曰a指向内存地址87912356502 8791235650256 >>>b=3 #创建变量b,并蓝值3 >>id(b) #返回b指向内存地址8791235650256 8791235650256 #创建变量。,并赋值 >>id(c) #返曰c指向内存地址8791235650256 8791235650256 从例23可以看出,只要三个变量a,b和c的值一样,其指向内存地址也是一样的。 c a b. 8791235650256 图2.1 Python内存管理棋式 0m具有自动内存管理功能,会跟踪所有的值,如果某个值没有变量指向它,则这 个值所占的内存空间将被释放,因此,Python程序 一般情况下不需要考虑内存管理的间 题。不过,使用dl命令删除不需要的值或变量,释放不需要资原,仍是一个好的习惯。 实例2.4删除对象 >>>testStr='Shanghai Disney Shanghai Di >>del testSt #利除对象GsSU >>>print(testStr) NameError name'a'is not defined 表明字符串变量tesS打已经别除】 2.1.3标识符和关键字 1、标识符 (1) 变量命名应符合标识符命名规则,即由字母、数字和下划线“_”组成,第 个字符不能是数字。比如_schoolNmae、deptOfComputer、.rateOf2O17、numerOfStudent等是合 法的,但3a是不合法的 #第一个字符不能是数字
True Python 变量内存分配方法与其他语言也不同,比如在 C 语言中,通过语句“int a; ”定 义整数变量 a 后,系统为 a 在内存中分配地址,该地址不会随着赋值改变,即通过“a=1” 和“a=2”可以改变变量 a 的值,但不改变变量 a 在内存中的地址。Python 则不同,采用的 是基于值的内存管理方式。如定义 a=3 后,系统为 3 分配了内存地址,变量 a 指向该地址, 如果再定义 b=3,那么变量 b 的地址也是指向 3 的地址,变量 a 与变量 b 指向同一地址,如 图 2-1 所示。通过内置函数 id( )可以查看变量所指值的内存地址(也为变量地址)。 实例 2-3 利用 id( )函数显示变量所指值的内存地址。 >>> a=3 #创建变量 a,并赋值 3 >>> id(a) #返回 a 指向内存地址 8791235650256 8791235650256 >>> b=3 #创建变量 b,并赋值 3 >>> id(b) #返回 b 指向内存地址 8791235650256 8791235650256 >>> c=a #创建变量 c,并赋值 3 >>> id(c) #返回 c 指向内存地址 8791235650256 8791235650256 从例 2-3 可以看出,只要三个变量 a,b 和 c 的值一样,其指向内存地址也是一样的。 图 2-1 Python 内存管理模式 Python 具有自动内存管理功能,会跟踪所有的值,如果某个值没有变量指向它,则这 个值所占的内存空间将被释放,因此,Python 程序员一般情况下不需要考虑内存管理的问 题。不过,使用 del 命令删除不需要的值或变量,释放不需要资源,仍是一个好的习惯。 实例 2-4 删除对象 >>> testStr='Shanghai Disney' >>> print(testStr) Shanghai Disney >>> del testStr #删除对象 testStr >>> print(testStr) NameError: name 'a' is not defined 表明字符串变量 testStr 已经删除。 2.1.3 标识符和关键字 1、标识符 (1) 变量命名应符合标识符命名规则,即由字母、数字和下划线“_”组成,第一 个字符不能是数字。比如_schoolNmae、deptOfComputer、rateOf2017、numerOfStudent 等是合 法的,但 3a 是不合法的。 >>> 3a="雄安" #第一个字符不能是数字
SyntaxError:invalid syntax 显示语法错误。 变量名中不能有空格以及标点符号(括号、引号、逗号、斜线、反斜线、目号、句号、问号 等) frmOName-Xiao Jia #特殊符号不能组成变量名 SyntaxError:invalid syntax >>>1 ambda=2019 期ambda为Python关战字 SvntaxError:invalid syntax h0n中的标识符不限长度,反分大小写,也可以用汉字(但不建议使用)。除变量 名外,函数名 类名 模块名和其他对象名称均要符合标识符命名规则,同时标识符不能使 用Python保留的关健字。那么,Python有哪些关健字呢? 2、关键字 查看Python关键字有两种方法: help() #进入hcp模式 Help(ke #帮助功能 或者 >>>import keyword#导入关键字模块 >>>print(keyword.kwlist) 显示Python有35个关键字,具体如下: false class from None continue global pass True def if raise and del import retum as elif in try else while excep lambda await finally nonlocal yield break for not 如果进一步查看某关键字的含义,只需要输入关键字,如查看and关键字,只需在help模 块下输入and即可。 help("and") #and为布尔运算符 冉来查看lambda关键字。 help("lambda") Lambdas 来中中净神中率 ambda_expr_nocond::="lambda"[parameter_list]":expression_nocond Lambda expressions (sometimes called lambda forms)are used to create anonymous functions.The expression"lambda parameters:expressionyields a function object The unnamed obicct behaves like a function obiect defined with: def<lambda-(parameters) return expression See section Function definitions for the syntax of parameter lists Note that functions created with lambda
SyntaxError: invalid syntax 显示语法错误。 变量名中不能有空格以及标点符号(括号、引号、逗号、斜线、反斜线、冒号、句号、问号 等)。 >>> frm()Name='Xiao Jia' #特殊符号不能组成变量名 SyntaxError: invalid syntax >>> lambda=2019 #lambda 为 Python 关键字 SyntaxError: invalid syntax Python 中的标识符不限长度,区分大小写,也可以用汉字(但不建议使用)。除变量 名外,函数名、类名、模块名和其他对象名称均要符合标识符命名规则,同时标识符不能使 用 Python 保留的关键字。那么,Python 有哪些关键字呢? 2、关键字 查看 Python 关键字有两种方法: >>> help() #进入 help 模式 Help(“keywords”) #帮助功能 或者 >>> import keyword #导入关键字模块 >>> print(keyword.kwlist) 显示 Python 有 35 个关键字,具体如下: False class from or None continue global pass True def if raise and del import return as elif in try assert else is while async except lambda with await finally nonlocal yield break for not 如果进一步查看某关键字的含义,只需要输入关键字,如查看 and 关键字,只需在 help 模 块下输入 and 即可。 help(“and”) #and 为布尔运算符 Boolean operations…… 再来查看 lambda 关键字。 help(“lambda”) Lambdas ******* lambda_expr ::= "lambda" [parameter_list] ":" expression lambda_expr_nocond ::= "lambda" [parameter_list] ":" expression_nocond Lambda expressions (sometimes called lambda forms) are used to create anonymous functions. The expression "lambda parameters: expression" yields a function object. The unnamed object behaves like a function object defined with: def <lambda>(parameters): return expression See section Function definitions for the syntax of parameter lists.Note that functions created with lambda