第二章数据类型与结构 与其他编程语言相比,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 (parameters): return expression See section Function definitions for the syntax of parameter lists.Note that functions created with lambda
express ns cannot contain statements or ar lambda用法将在2.2.7节和5.1.9节详细叙述。 3、而定义标识符 Phon许多预定义的内置类、异常、函数等,如0at、impt、s、dict等,用户应莲免使 用它们来为变量、函数、类、对象等命名。通过dir(_builtins_)可以查看所有的内置变量和内 置函数。 >dir_builtins_)#查询内置变量和内置函数名 class,'contains delattr delitem'dir'doc cq,format,ge' gt__hash_ini,init subclas iter le len ht ne str'subclasshook 'clear','copy,'fromkeys','gct','items','keys','pop','popitem','setdefault','update' values 2.1.4运算符与表达式 同其他语言一样,ho也定义了算术运算符、关系运算符、逻辑运算符和位运算符 并且运算符的优先级与大多数语言一致。但是,Py山o还定义了一些特定运算符,如成员 测试运算符、集合运算符、同一性测试运算符等。Pyho运算符分类如下: (1)算术运算符:+、-、·、人从、%、* (2)关系运算符:、=、=、= (3)逻辑运算符: and、or、not (4)成员测试运算符:im、not in (5)同一性测试运算符:is、is not (6)位运算符:卜人、&、、一 (7)集合运算符:&、卜A (8)矩阵运算符:@ (9)赋运算符: 十=、=、 =、仁、%、*= 其具体含义如表2-1所示。 表2-1 Python运算符功能 运算符分类 运算符表达式 功能说明 加法,或列表、元组、字符串合并 a-b 减法,或集合差集 乘法,或序列重复、字符串重复 算术运算符 除法 两数商向上取整 a%b 取余数,或字符串格式化 ab 求ah b、a-b 判断两数是否相等 关系运算符 ab.a>=b a and b 取逻辑与 逻辑运算符 a or b 取逻辑或 not a 取逻辑
expressions cannot contain statements or annotations. lambda 用法将在 2.2.7 节和 5.1.9 节详细叙述。 3、预定义标识符 Python 许多预定义的内置类、异常、函数等,如 float、input、list、dict 等,用户应避免使 用它们来为变量、函数、类、对象等命名。通过 dir(__builtins__)可以查看所有的内置变量和内 置函数。 >>> dir(__builtins__) #查询内置变量和内置函数名 '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values' 2.1.4 运算符与表达式 同其他语言一样,Python 也定义了算术运算符、关系运算符、逻辑运算符和位运算符, 并且运算符的优先级与大多数语言一致。但是,Python 还定义了一些特定运算符,如成员 测试运算符、集合运算符、同一性测试运算符等。Python 运算符分类如下: (1)算术运算符:+、–、*、/、//、%、** (2)关系运算符:、>=、==、!= (3)逻辑运算符:and、or、not (4)成员测试运算符:in、not in (5)同一性测试运算符:is、 is not (6)位运算符:|、^、&、>、~ (7)集合运算符:&、|、^ (8)矩阵运算符:@ (9)赋值运算符:=、+=、-=、*=、/=、%=、**= 其具体含义如表 2-1 所示。 表 2-1 Python 运算符功能 运算符分类 运算符表达式 功能说明 算术运算符 a+b 加法,或列表、元组、字符串合并 a-b 减法,或集合差集 a*b 乘法,或序列重复、字符串重复 a/b 除法 a//b 两数商向上取整 a%b 取余数,或字符串格式化 a**b 求 b a 关系运算符 a==b、a!=b 判断两数是否相等 ab、a>=b 比较两数大小,或比较集合包含关系 逻辑运算符 a and b 取逻辑与 a or b 取逻辑或 not a 取逻辑非
成员测试运算符ainb、a not in b 测试成员a是香在成员b中 同一性测试运算符aisb、a is notb 测试两个对象实体是否相等(内存地址一致) 按位取或 按位取异政 位运算符 按位取与 左移位 右移位 按位取非 取集合交集 集合运算符 取集合并集 取集合对称差集 矩阵运算符 矩阵相乘 赋值运算 自加运算 自减运算 赋值运算符 自乘运算 自除运算 自取余运算 自求幂远 提示:(1)与共他语言不同,除法运算符“”、求余运算符“%”可对实数进行操作。如 >>>3.1415926W2.0 #被除数为实数 15707063 223.1415926%2.0#实数求余 和除法运算符“”可用于复数相乘、相除 (3)“”与“W”的关系是:abbb+%b,即“”是两个数相除的商并向上取整数部分。如: 2222017.0W5 403.4 22>2017.015 #相除取整 4030 >>>-7.0/3 -2.3333333333333335 2>>-7.0/13 #相除取整 .30 4)Pyho很多运算符作用于不同类型操作数时表现出不同的含义,灵活使用。例如 >>34 #两数相加 >>>"Chinese"+*Taiwan" #连接两个字符串 Chinese Taiwan' [12.34.5#合并两个列表 1,234,56 >>(1,23(45,6)#合并两个元组 1,2,3.4,56)
成员测试运算符 a in b、a not in b 测试成员 a 是否在成员 b 中 同一性测试运算符 a is b、a is not b 测试两个对象实体是否相等(内存地址一致) 位运算符 | 按位取或 ^ 按位取异或 & 按位取与 > 右移位 ~ 按位取非 集合运算符 & 取集合交集 | 取集合并集 ^ 取集合对称差集 矩阵运算符 @ 矩阵相乘 赋值运算符 = 赋值运算 += 自加运算 -= 自减运算 *= 自乘运算 /= 自除运算 %= 自取余运算 **= 自求幂运算 提示:(1)与其他语言不同,除法运算符“/”、 求余运算符“%”可对实数进行操作。如: >>> 3.1415926/2.0 #被除数为实数 1.5707963 >>> 3.1415926%2.0 #实数求余 1.1415926 (2)乘法运算符“*”和除法运算符“/”可用于复数相乘、相除。 (3)“/”与“//”的关系是:a/b=a//b*b+a%b,即“//”是两个数相除的商并向上取整数部分。如: >>> 2017.0/5 403.4 >>> 2017.0//5 #相除取整 403.0 >>> -7.0/3 -2.3333333333333335 >>> -7.0//3 #相除取整 -3.0 (4)Python 很多运算符作用于不同类型操作数时表现出不同的含义,灵活使用。例如: >>> 3+4 #两数相加 7 >>> "Chinese "+"Taiwan" #连接两个字符串 'Chinese Taiwan' >>> [1,2,3]+[4,5,6] #合并两个列表 [1, 2, 3, 4, 5, 6] >>> (1,2,3)+(4,5,6) #合并两个元组 (1, 2, 3, 4, 5, 6)
≥>x1,2,3,4,5Dc2,34,56#合并两个集合 {1,2.3.45.6} 关于列表、元组、集合、字符串数据类型将在本章余下章节叙述。 2.1.5数据对象分类 除了在第2.1.1和2.12节中介绍的整数(int)、浮点数(loat)、复数(complex)、字 符(sr)、逻辑(bo0l)等基础类型外,还有由这些基本类型构造成的典型复合型的字符串、 列表、元组、集合、字典、rnge签新据对象。 P山0语言视字符与字符串为同一对象,都是型。可由汉字、数字、大小写字母以及 其它printabe字符组成。如"China Intemational Import Expo,CIIE,Shanghai,.2018.1l.05- 1018.11.10°、20191@#s%^&、"%”。如: str1="China International Import Expo,2018.11.05-1018.11.10 st2-China ntemational mpor Expo,.2018.11.0s-1018.1l.10#单引号 >>>ype(st2)#期显示类型 糊字符中类型 列表型对象(st)由中括号“0”组成,内部元素由逗号“,”隔开,如: >>>1st=1.3.5.7.91 #显示类型 class 'list> 列表类型 元组型对象(tuple)由中括号“T”组成,内部元素由逗号“,”隔开,如: >>>tp1.'a2,b'3,'c >>>type(tpl) 制显示类型 #元组类型 集合型对象(st)由关键字st和“(J)”构成或者由“”构成,元素之间由 逗号“”隔升,如: >=ct1,35,@,#])#使用sctD构造集合 >type(s) #显示类型 >>=1,35@,#糊使用构造集合 >2>=sct13,5.@,常,1.35 2228 ,35@ 群重复元素只取其 字典型对象(dict)由{ …组成,元素之间由由逗号“,”隔开,每个元素由“关键 字:值(key:value)”组成。如: d=1:'Beijing2."Shanghai"3:"GuangZhou",4:'Shenzhen' >>yDe(d#最示类型 字典类型 >d2#元素引用
>>> set([1,2,3,4,5])|set([2,3,4,5,6]) #合并两个集合 {1, 2, 3, 4, 5, 6} 关于列表、元组、集合、字符串数据类型将在本章余下章节叙述。 2.1.5 数据对象分类 除了在第 2.1.1 和 2.1.2 节中介绍的整数(int)、浮点数(float)、复数(complex)、字 符(str)、逻辑(bool)等基础类型外,还有由这些基本类型构造成的典型复合型的字符串、 列表、元组、集合、字典、range 等数据对象。 Python 语言视字符与字符串为同一对象,都是 str 型。可由汉字、数字、大小写字母以及 其 它 printalbe 字 符 组 成 。 如 "China International Import Expo,CIIE,Shanghai, 2018.11.05- 1018.11.10"、'2019!@#$%^&*'、"%"。如: >>> str1="China International Import Expo, 2018.11.05-1018.11.10" ##双引号 >>> type(str1) >>> str2='China International Import Expo, 2018.11.05-1018.11.10' ##单引号 >>> type(str2) ##显示类型 ##字符串类型 列表型对象(list)由中括号“[]”组成,内部元素由逗号“,”隔开,如: >>> lst=[1,3,5,7,9] >>> type(lst) ##显示类型 ##列表类型 元组型对象(tuple)由中括号“[]”组成,内部元素由逗号“,”隔开,如: >>> tpl=(1,'a',2,'b',3,'c') >>> type(tpl) ##显示类型 ##元组类型 集合型对象(set)由关键字 set 和“([……])”构成或者由“{}”构成,元素之间由 逗号“,”隔开,如: >>> s=set([1,3,5,'@','#']) ##使用 set([])构造集合 >>> type(s) ##显示类型 ##集合类型 >>>s={1,3,5,'@','#'} ##使用{}构造集合 >>> s=set([1,3,5,'@','#',1,3,5]) >>> s {'#', 1, 3, 5, '@'} ##重复元素只取其一 字典型对象(dict)由{……}组成,元素之间由由逗号“,”隔开,每个元素由“关键 字:值(key:value)”组成。如: >>> d={1:'Beijing',2:"Shanghai",3:"GuangZhou",4:'Shenzhen'} >>> type(d) ##显示类型 ##字典类型 >>> d[2] ##元素引用
'Shanghai range型对象由关键字range(start,.end)构成,其中start是起始数,cnd表明结尾数为 end-l。如: =range((1,l0)#定义range类型对象 range(1,10) >》ye0精显示类型 >>0#第1个元素引用 >>91#第10个元素引用,超出范围,异常 IndexError:range object index out of range 2>8】第9个元素引用 >1,10:#逐个引用所有元素 print(i.end=) 12.3.4.5.6.7.8.9. 上述对象详细描述在余下章节陆续展开。 2.1.6字符串 在Pyho加中,字符串和数值是最为常见的数据类型,如姓名、学号、电话号码、身份证 号码、家庭住址等都是典型的字符串。一般使用单引号、双引号或三单引号、三双引号进行界 定,且单引号、双引号、三引号还可以互相嵌套,用来表示复杂字符串。如 stic、"tici"、"sticm、"Ilove STIEL"Xiaoiia said" 注意,当字符串使用双引号界定时,单引号可以出现在字符串中,但双引号不可以。如 >》wOCh="台湾是中国的一个省 >>print(twOfCh) 台湾是中国的一个省 2>wOCh==钩鱼岛"自古是中因领土 同样,由单引号定义的字符串可以包含双引号,但不能直接使用单引号。空字符串表示 为"、"、",即一对不包含任何内容的任意字符串界定符。 特别地,三单引号或三双引号表示的字符串支持换行,支持排版格式较为复杂的字符 串,也可以在程序中表示较长的注释。 字符串支持使用“+”运算符进行合并以生成新字符串。 中国堆安 中国推安 可以对字符串进行格式化,把其他类型对象按格式要求转换为字符串,并返回结果字 符串,例如 >>alnt=3.14159 粗为数值
'Shanghai' range 型对象由关键字 range(start, end)构成,其中 start 是起始数,end 表明结尾数为 end-1。如: >>> r=range(1,10) ##定义 range 类型对象 r >>> r range(1, 10) >>> type(r) ##显示类型 >>> r[0] ##第 1 个元素引用 1 >>> r[9] ##第 10 个元素引用,超出范围,异常 IndexError: range object index out of range >>> r[8] ##第 9 个元素引用 9 >> for i in range(1,10): ##逐个引用所有元素 ... print(i,end=',') ... 1,2,3,4,5,6,7,8,9, 上述对象详细描述在余下章节陆续展开。 2.1.6 字符串 在 Python 中,字符串和数值是最为常见的数据类型,如姓名、学号、电话号码、身份证 号码、家庭住址等都是典型的字符串。一般使用单引号、双引号或三单引号、三双引号进行界 定,且单引号、双引号、三引号还可以互相嵌套,用来表示复杂字符串。如 'stiei'、'''stiei ''、'''stiei'''、'''"I love STIEI." Xiaojia said''' 注意,当字符串使用双引号界定时,单引号可以出现在字符串中,但双引号不可以。如 >>> twOfCh="'台湾'是中国的一个省" >>> print(twOfCh) '台湾'是中国的一个省 >>> twOfCh=""钩鱼岛"自古是中国领土" SyntaxError: invalid syntax 同样,由单引号定义的字符串可以包含双引号,但不能直接使用单引号。空字符串表示 为''、'''、'''''',即一对不包含任何内容的任意字符串界定符。 特别地,三单引号或三双引号表示的字符串支持换行,支持排版格式较为复杂的字符 串,也可以在程序中表示较长的注释。 字符串支持使用“+”运算符进行合并以生成新字符串。 >>>xaOfCha='中国'+"雄安" >>> xaOfCh '中国雄安' 可以对字符串进行格式化,把其他类型对象按格式要求转换为字符串,并返回结果字 符串,例如 >>> aInt=3.14159 #a 为数值
>>bStr='%8.2f%alnt b为字符串,宽度为8。小数点后2位 hStr 314 >%d%c%97,97)#按格式要求显示 97:a Python支持转义字符,常用的转义字符如表2-2所示。 表2-2转义字符 转义字符 含义 转义字符 含义 换行符 双引号 到表荷 个1 回车 \ddd 3位八进制数对应的字符 单引号 xhh 2位十六进制数对应的字符 提示:(1) 字符串索引是从“0"开始的,例如”X0g'an”第一字母“X"的索引值是0,第二个字号 “”的东引值为1,依此关推。也可以从字符串最后一个字母“”开始记数,其索引值是-1,倒数第二个字 母“a索引值是-2,…例如: >>>xa="Xiong'an" #第一个字符 >>xa[-1] #第后一个字符 (2) 字符串界定符前面加字母r或R表示原始字符串,其中的特殊字符不进行转义,但字符串 的最后一个字符不能是符号。原始字符串主要用于正则表达式,也可以用来简化文件路径或的输入, 倒如 路径“d-\Python37 scripts"和r':Python37'-样。 r'htps小x.qq.com/代表网址htps:Xqq,coml 详细内容请参考第4章。 (3) 字符串是不可变序列,就是说,字符串中任何字符都是不可改变的。例如: >xa="Xiong'an" >>xa0]x 试图把第一字母大写的“X”改为小写字母“x Traceback (most recent call last): File ""line 1.in TypeError:'str'object does not support item assignment 有关字符串更名内容将在41节展开。 提示:请同学们思考 (1)字符串第一字符的索写引值为0,为什么最后一个字符的索引值为1? (2)xa1:I02,a10,Xa10(注意:10超出a的索引值范图)。 2.2列表 列表(ist)是Python对象的 一个可变的有序序列。其中列表中元素可以是任何类型, 不要求类型必须是一致,而且元素的值是可以改变的。列表的创建可以使用中括号“和 ““将所有元素括起来,并且每个元素之间用逗号分隔。例如: >>>prime0 Mersenne=3.7.31.127.819l.524287刀#梅森素数
>>> bStr=’%8.2f’% aInt #b 为字符串,宽度为 8,小数点后 2 位 >>> bStr ' 3.14' >>> "%d:%c"%(97,97) #按格式要求显示 '97:a' Python 支持转义字符,常用的转义字符如表 2-2 所示。 表 2-2 转义字符 转义字符 含 义 转义字符 含 义 \n 换行符 \’’ 双引号 \t 制表符 \\ 一个\ \r 回车 \ddd 3 位八进制数对应的字符 \’ 单引号 \xhh 2 位十六进制数对应的字符 提示:(1) 字符串索引是从“0”开始的,例如”Xiong’an”第一字母“X”的索引值是 0,第二个字母 “i”的索引值为 1,依此类推。也可以从字符串最后一个字母“n”开始记数,其索引值是-1,倒数第二个字 母“a”索引值是-2,……例如: >>> xa="Xiong'an" >>> xa[0] #第一个字符 'X' >>> xa[-1] #第后一个字符 'n' (2) 字符串界定符前面加字母 r 或 R 表示原始字符串,其中的特殊字符不进行转义,但字符串 的最后一个字符不能是\符号。原始字符串主要用于正则表达式,也可以用来简化文件路径或 url 的输入, 例如: 路径“d:\\Python37\\scripts”和 r’d:\Python37\scripts’一样。 r’https://wx.qq.com/’代表网址 https://wx.qq.com/ 详细内容请参考第 4 章。 (3) 字符串是不可变序列,就是说,字符串中任何字符都是不可改变的。例如: >>> xa="Xiong'an" >>> xa[0]='x' #试图把第一字母大写的“X”改为小写字母“x” Traceback (most recent call last): File "", line 1, in TypeError: 'str' object does not support item assignment 有关字符串更多内容将在 4.1 节展开。 提示:请同学们思考:(1)字符串第一字符的索引值为 0,为什么最后一个字符的索引值为-1? (2)xa[1:10]=?,xa[10:]=?,xa[10]=?(注意:10 超出 xa 的索引值范围)。 2.2 列表 列表(list)是 Python 对象的一个可变的有序序列。其中列表中元素可以是任何类型, 不要求类型必须是一致,而且元素的值是可以改变的。列表的创建可以使用中括号“[”和 “]”将所有元素括起来,并且每个元素之间用逗号分隔。例如: >>>primeOfMersenne=[3,7,31,127,8191,524287] #梅森素数