第三章:Python基本数据类型
总览
3.1 数字类型
3.1.1 整数类型
- 整数类型与数学中的整数概念一样,理论取值[-∞,+∞],只要计算机有足够的内存能够存储,Python程序可以使用任意大小的整数。一般认为整数类型没有取值范围。
整数类型有四种进制表示,前缀分别如下:
0b 二进制、0o八进制、0x十六进制、十进制默认没有前缀
其中字母大小写均可,但为了规范好看要统一,即用大写就都用大写,用小写就都用小写。
3.1.2 浮点数类型
- 浮点数与数学中的实数概念一样。表示带小数的数值。Python中的浮点数类型必须带有小数部分,小数部分可以是0.
浮点数有两种表示方法,如下:
- 十进制形式的一般表示法:10105.16422
- 科学计数法:1.02e3,1.568e-3
- Python中的浮点数只有十进制表示,没有其他进制。
- 浮点数的数值范围和小数精度受到计算机系统的限制,一般来说取值范围在-10^308 ~10 ^308之间,浮点数之间的区分精度约为2.22*10 ^-16。
Python的浮点数存在一个不确定尾数的问题。即两个浮点数运算结果却可能不同。
>>>0.1 + 0.2 == 0.3
False
由于不确定尾数的存在使得浮点数在判断时可能出错,为了解决这个问题,需要使用round()函数去除不确定尾数。
round()函数是一个四舍五入函数,能够对数值进行四舍五入操作。
>>>round(1.2346,2)
1.23
>>>round(1.2346,3)
1.235
3.1.3 复数类型
复数表示数学中的复数类型。Python中将复数看作二元有序实数对(a,b),a表示是实数部分,简称实部,b表示虚数部分,简称虚部。
虚数部分使用J或者j作为虚部后缀,需要注意,b为1时,需要写成1j而不能和数学中那样只写j。
复数类型的实部和虚部都是浮点数类型,对于复数z分别使用 z.real和z.imag分别获取z的实部和虚部。
3.2 数字类型的运算
3.2.1 数值运算操作符
Python提供了9个基本运算符,使用习惯与数学基本一致。
操作符及运算 | 描述 |
---|---|
x+y | x与y之和 |
x-y | x与y之差 |
x*y | x与y之积 |
x/y | x与y之商,结果是浮点数 |
x//y | x与y整数商,即不大于x和y之商的最大整数 |
x%y | x与y之商的余数,也称模运算 |
-x | x的负值,即x*(-1) |
+x | x本身 |
x**y | x的y次幂。 |
数值运算可能改变结果的数据类型,类型的改变与运算符有关,有以下基本规则
- 整数和浮点数混合运算,输出是浮点数。
- 整数之间运算,产生结果类型与操作符相关,除法运算(/)的结果是浮点数。
- 整数或浮点数与复数运算,输出结果是复数。
所有的二元运算符都能与赋值运算符相连,形成增强赋值操作符(+=,-=,*=,/=,//=,%=,**=)。用op表示这些二元运算操作符,增强赋值操作符用法如下:
x op= y 等价于 x = x op y。
【提示】空格
增强赋值操作符中op与=之间不能增加空格。
3.2.2 数值运算函数
函数不同于操作符,其表现为对参数的特定运算。Python解释器自身提供了一些预装函数,称为“内置函数”。如表所示:
函数 | 描述 |
---|---|
abs() | x的绝对值 |
divmod() | (x//y,x%y),输出为二元组形式(也称为元组类型) |
pow(x,y)或pow(x,y,z) | x* * y或(x* *y)%z,幂运算 |
round(x)或round(x,d) | 对x四舍五入,保留d位小数,无参数d则返回四舍五入的整数 |
max(x1,x2,……,xn) | x1,x2,.……,xn的最大值,n没有限定,可以任意数量 |
minx1,x2,……,xn) | x1,x2,.……,xn的最小值,n没有限定,可以任意数量 |
3.3 字符串类型及格式化
字符串是字符的序列表示,根据字符串内容的多少分为单行字符串和多行字符串。
- 单行字符串是由一对单引号或者一对双引号作为边界表示,使用双引号的时候,单引号可以作为字符串的一部分,使用单引号的时候,双引号可以作为字符串的一部分。
- 多行字符串使用三单引号或者三双引号作为边界表示。
这里解释一下关于前边所说的多行注释。实际上Python并不存在专用的多行注释。使用三引号当做多行注释其实是因为表述方便,而非是说三引号是多行注释。其本质是定义了一个多行字符串,但是不调用,摆在那里看而已。
【注】特殊字符 反斜杠符号(\)
Python中他拥有两种含义:转义 和 续行
- 转义:与该字符后相邻的一个字符共同组成一个新含义。例如 \n表示换行,\表示反斜杠,\t表示制表符(tab)等。
- 续行:当一行中表达的逻辑代码过长或处于美观增加阅读性的考虑,通常需要将超长代码在连续的不同行上表示。续行不仅仅存在于上一篇中所说的字符串续行,在更广泛的代码编写中都有应用。
3.3.1 字符串的索引
对字符串中某个字符的检索叫成为索引。
详情可以看上一篇的2.3.3节
3.3.2 字符串切片
对字符串的某个子字符串或区间的检索称为切片。使用方法如下
‘字符串或字符串变量’[m:n]
切片获取字符串从m到n(不包括n)的子字符串。m和n是字符串的索引序号,可以混合使用正向递增序号和反向递减序号。
3.3.3 format()方法的基本使用
字符串中整合变量时需要使用字符串格式化方法。Python语言推荐使用format()格式化方法。
“模板字符串”.format(逗号分割的参数)
>>> "{}是要填充的文字".format("孔子")
'孔子是要填充的文字'
模板文字是一个有字符串和槽组成的字符串,用来控制字符串和变量的显示效果。槽用{}表示,对应format()方法中的参数。
关于槽有以下两个点注意:
- 如果模板字符串有多个槽,且槽内没有指定序号,则按照槽出现的顺序分别对应format()方法中不同的参数,例如:
>>>"{}是一门{}".format("python","编程语言")
输出结果:python是一门编程语言
- 槽是有序号的,在不指定的时候默认按照出现的前后进行编号对应。但也可以指定序号,例如:
>>>"{1}是一门{0}".format("python","编程语言")
输出结果:编程语言是一门python
- 如果希望在模板字符串中直接输出大括号,请使用{{表示{,}}表示}。
3.3.4 format()方法的格式控制
format()的槽除了可以表示序号,还可以表示格式控制信息
: | 填充 | 对齐 | 宽度 | , | .精度 | 类型 |
---|---|---|---|---|---|---|
引导符号 | 用于填充的单个字符 | <左对齐,>右对齐,^居中对齐 | 槽设定的输出宽度 | 数字的千位分隔符 | 小数的精度或字符串的最大输出长度 | 整数类型(b,c,d,o,x,X)浮点数类型(e,E,f,%) |
3.4字符串类型操作
3.4.1 字符串操作符
操作符及运算 | 描述 |
---|---|
x+y | 连接两个字符串x和y |
x * n 或 n * x | 复制n次字符串x |
x in s | 如果x是s的子字符串,返回True,否则返回False |
3.4.2 字符串处理函数
Python语言提供了一些对于字符串处理的内置函数。如下
函数 | 描述 |
---|---|
len(x) | 返回字符串长度 |
str(x) | 返回任意类型x对应的字符串形式 |
chr(x) | 返回Unicode编码x对应的单字符 |
ord(x) | 返回单字符x表示Unicode编码 |
hex(x) | 返回整数x对应的十六进制的小写形式字符串 |
oct(x) | 返回整数x对应的八进制的小写字符串形式 |
3.4.3 字符串处理方法
方法是程序设计中有一个专有名词,属于面向对象程序设计领域。方法也是函数,只是调用方法不同。
方法 | 描述 |
---|---|
str.lower() | 返回字符串str的小写字符副本 |
str.upper | 返回字符串str的大写字符副本 |
str.split(sep = None) | 返回一个根据sep将str分隔成的各部分组成,省略sep默认按照空格分隔 |
str.count(sub) | 返回sub字符串出现的次数 |
str.replace(old,new) | 返回字符串str的副本,所有的old子串被替换为new子串 |
str.senter(width,fillchar) | 字符串居中函数,fillchar参数可选 |
str.strip(chars) | 从字符串str去掉在其左侧和右侧chars中出现的字符 |
str.join(iter) | 将iter变量的每一个元素后增加一个str字符串 |
3.5类型判断和类型间转换
Python语言使用type(x)函数对变量x进行类型判断,适用于任何类型。
>>> type(10.10)
<class 'float'>
>>> type('10.10')
<class 'str'>
>>> type(1010)
<class 'int'>
>>> type([])
<class 'list'>
[注意]type()的输出
type(‘10.10’)的输出不是<class ‘str’>,这只是一种内部表达,需要进行类型比较的时候不能使用字符串比较方式进行判断,例子如下:
>>> type('a') == type(123)
False
>>> type(123) == type(456)
True
Python除了可以查看变量的类型以外,也提供了一些变量间的转换函数,如下所示:
函数 | 描述 |
---|---|
int(x) | 将x转换成int类型,x可以是浮点数或者字符串 |
float(x) | 将x转换成float类型,x可以是整数或者字符串 |
str(x) | 将x转换成string类型,x可以是整数和浮点数 |