Python 提供了一些内置的数据类型,它们由系统预定义好,在程序中可以直接使用。
Python 数据类型包括数值型、字符串型、布尔型等基本数据类型,这是一般程序设计语言都有的数据类型。
为了使程序能描述现实世界中各种复杂数据,Python 还有列表、元组、字典和集合等复合数据类型,这是 Python 中具有特色的数据类型
1.数值类型
Python 支持3 种不同的数值数据类型:
整型(int)
浮点型(float) 复数型(complex)
一、整型数据
在Python 3.x 中,整型数据的值在计算机内的表 示不是固定长度的,只要内存许可,整数可以扩展到任意长度,整数的取值范围几乎包括了全部整数(无限大),这给大数据的计算带来便利。
Python 的整型常量有以下4 种表示形式。
(1)十进制整数
如120、0、−374 等。
(2)二进制整数
它以0b 或0B(数字0 加字母b 或B)开头,后接数字 0,1 的整数。
例:
>>> 0b1111
15
0b1111 表示一个二进制整数,其值等于十进制数15。
(3)八进制整数
它是以0o 或0O(数字0 加小写字母o 或大写字母 O)开头,后接数字0~7的整数。
例:
>>> 0o127
87
0o127 表示一个八进制整数,其值等于十进制数 87。
(4)十六进制整数
它是以0x 或0X 开头,后接0~9 和A~F(或用小 写字母)字符的整数。
例:
>>> 0xabc
2748
0xabc 表示一个十六进制整数,其值等于十进制数2748。
二、浮点型数据
浮点型数据表示一个实数,有以下两种表示形式。
(1)十进制小数形式
它由数字和小数点组成,如3.23、34.0、0.0 等。
浮点型数据允许小数点后面没有任何数字,表示小数部分为0,如34.表示34.0。
(2)指数形式
指数形式即用科学计数法表示的浮点数,用字母e(或E)表示以10 为底的指数,e 之前为数字部分,之后为指数部分,且两部分必须同时出现,指数必须为整数。
例:
>>> 45e-5
0.00045
>>> 45e-6
4.5e-05
>>> 9.34e2
934.0
45e-5、45e-6、9.34e2 是合法的浮点型常量,分别代表 45×10−5 、45×10−6 、9.34×102。
字母e(或E)前必有数, e(或E)后必为整数。
例:e4、3.4e4.5、34e 等是非法的浮点型常量。
对于浮点数,Python 3.x 默认提供17 位有效数字的精度,相当于C 语言中的双精度浮点数。
例:
>>> 1234567890123456.0
1234567890123456.0
>>> 1234567890123456789.0
1.2345678901234568e+18
>>> 1234567890123456789.0+1
1.2345678901234568e+18
>>> 1234567890123456789.0+1-1234567890123456789.0
0.0
>>> 1234567890123456789.0-1234567890123456789.0+1
1.0
在Python 中,为什么1234567890123456789.0+1- 1234567890123456789.0 的结果为0.0,而 1234567890123456789.0-1234567890123456789.0+1 的 结果为1.0,这就需要了解Python 浮点数的表示方法。
数学上1234567890123456789.0+1 等于 1234567890123456790.0,但由于浮点数受17 位有效 数字的限制,Python 中1234567890123456789.0+1 的结果等于1.2345678901234568e+18,其中加1的结果 被忽略了, 1234567890123456789.0+1 再减去 1234567890123456789.0 的结果为0 。
1234567890123456789.0- 1234567890123456789.0+1 先执行的是减法运算,得到0,然后再加上1,结果为1.0,所以计算机中的计算与数学上的计算是不同的,其原因是计算 机中的计算必须依赖于计算机的计算能力。
在进行问题求解时必须注意这种差别,这就是计算思维的思想。
例:
>>> 1.001*10
10.009999999999998
为什么Python 中1.001*10 结果是 10.009999999999998,而不是10.01,其原因在于十进制小数转换为二进制小数时可能出现无限小数问题,而Python 在存储小数时使用的是双精度 浮点数,这种数只可以保存一定位数的有效数字, 所以当遇到无限小数时就会出现损失精度的问题。
三、复数型数据
在科学计算问题中常会遇到复数运算问题。
例:数学中求方程的复根、电工学中交流电路的 计算、自动控制系统中传递函数的计算等都要用 到复数运算。
Python 提供了复数类型,这使得有关复数运算问 题变得方便容易。
复数类型数据的形式为:a+bJ 或 a+bj
其中,a 是复数的实部,b 是复数的虚部,J 表示 −1 的平方根(虚数单位)。
虚数单位既可以用大写字母J 也可以写成小写字母 j,注意不是数学上的i。
例:
>>> x=12+34J
>>> print(x)
(12+34j)
可以通过x.real 和x.imag 来分别获取复数x 的实部和虚部,结果都是浮点型。
例:接着上面的语句,继续执行以下语句:
>>> x.real
12.0
>>> x.imag
34.0
2.字符串类型
(1)Python 标准字符串
在 Python 中定义一个标准字符串可以使用单引号、 双引号和三引号(三个单引号或三个双引号), 这使得Python 输入文本更方便。
例如,当字符串的内容中包含双引号时,就可以用单引号定义,反之亦然。
例:
>>> s='uestc'
>>> print(s)
uestc
>>> print(s[0]) #输出字符串的第1 个字符
u
>>> print(s[2:4]) #输出字符串的第3~4 个字符
st
>>> t="I am 'Python'"
>>> print(t)
I am 'Python'
用单引号或双引号括起来的字符串必须在一行内表示,这是最常见的表示字符串的方法,而用三引号括起来的字符串可以是多行的(文本块)。
>>> s="""I'm "Python"!"""
>>> print(s)
I'm "Python"!
>>> s="""
1.AAAA
2.BBBB
3.CCCC
请选择:"""
>>> print(s)
1.AAAA
2.BBBB
3.CCCC
请选择:
Python 字符串中的字符不能被改变,向一个位置 赋值会导致错误。
例:
>>> s="ABCDEFG"
>>> s[1]="8" #试图改变第2 个字符导致出错
在Python 中,修改字符串只能重新赋值,每修改 一次字符串就生成一个新的字符串对象,这看起 来好像会造成处理效率下降。
其实,Python 系统会自动对不再使用的字符串进行垃圾回收,所以,新的对象重用了前面已有字 符串的空间。