2.4 数据类型
Python 3中有6个标准的数据类型,即Number(数字)、String(字符串)、Sets(集合)、List(列表)、Tuple(元组)和Dictionary(字典)。下面分别介绍这6种数据类型的使用方法。
2.4.1 Number(数字)
Python 3支持int(整数)、float(浮点数)、bool(布尔值)、complex(复数)四种数字类型。
注意
在Python 2中是没有bool(布尔值)的,它用数字0表示False,用1表示True。在Python 3中,把True和False定义成了关键字,但它们的值还是1和0,而且可以和数字相加。
1.int(整数)
下列是整数的案例:
>>> a = 2147483647 >>> a 2147483647
可以使用十六进制数值来表示整数,十六进制整数的表示法是在数字之前加上0x,例如0x80000000、0x100000000L。如下例所示:
>>>a=0x7FFFFFFF >>> a 2147483647
2.float(浮点数)
浮点数的表示法可以使用小数点形式,也可以使用指数形式。指数符号可以使用字母e或是E,指数前可以使用+/-符号,也可以在指数数值前加上数值0;在整数前也可以加上数值0。下面举例说明:
3.14 10. .001 1e100 3.14E-10 1e010 08.1
使用float()内置函数,可以将整数数据类型转换成浮点数数据类型。例如:
>>> float(5) 5.0
3.bool(布尔值)
Python的布尔值包括True和False,它只和整数中的1和0有着对应的关系。例如:
>>> True==1 True >>> True==2 False >>> False==0 True >>> False==-1 False
这里是利用==号判断左右两边是否绝对相等。
4.complex(复数)
复数的表示法是使用双精度浮点数来表示实数与虚数的部分,复数的符号可以使用字母j或是J。例如,下面是复数表示:
1.5 + 0.5j 1J 2 + 1e100j 3.14e-10j
可以使用real与imag属性分别取出复数的实数与虚数部分。例如:
>>>a=1.5+0.5j >>>a.real 1.5 >>> a.imag 0.5 >>> a (1.5+0.5j)
可以使用complex(real, imag)函数,将real与imag两个数值转换成复数。real参数是复数的实数部分,imag参数是复数的虚数部分。例如:
>>> complex(1.5,0.5) (1.5+0.5j)
数值之间可以通过运算符进行运算操作。例如:
>>> 5 + 4 # 加法 9 >>> 4.3-2 # 减法 2.3 >>> 3 * 7 # 乘法 21 >>> 2/4 # 除法,得到一个浮点数 0.5 >>> 2//4 # 除法,得到一个整数 0 >>> 17 % 3 # 取余 2 >>> 2 ** 5 # 乘方 32
在数字运算时,需要注意以下问题。
(1)数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符。
(2)在整数和浮点数混合计算时,Python会把整数转换成为浮点数。
用户可以将数值使用在函数内。例如:
>>> round(12.32, 1) 12.3
可以对数值进行比较。例如:
>>>x = 2 >>>0 < x < 5 True
但是不可以对复数进行比较。例如:
>>> 0.5 + 1.5j < 2j Traceback (most recent call last): File "<pyshell#48>", line 1, in <module> 0.5 + 1.5j < 2j TypeError: unorderable types: complex() < complex()
用户可以将数值做位移动(shifting)或是屏蔽(masking)。例如:
>>>16 << 2 64 >>>30 & 0x1B 26 >>>2 | 5 7 >>>3 ^ 5 6 >>>~2 -3
内置的type()函数可以用来查询变量所指的对象类型。例如:
>>>a, b, c, d = 20, 5.5, True, 4+3j >>> print(type(a), type(b), type(c), type(d)) <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
该案例就显示了4个变量所对应的4种数据类型。
2.4.2 String(字符串)
字符串属于序列类型(sequence type)。Python将字符串视为一连串的字符组合,例如字符串“Parrot”,在Python内部则是视为"P" "a" "r" "r" "o" "t" 6个字符的组合。第1个字符的索引值永远是0,因此存取字符串“Parrot”的第1个字符“P”时使用"Parrot"[0],如下例所示:
>>> "Parrot"[0] 'P' >>> "Parrot"[1] 'a'
在创建一个字符串时,可以将数个字符以单引号、双引号或是三引号包含起来。例如:
>>>a = 'Parrot' >>> a 'Parrot' >>>a = "Parrot" >>>a 'Parrot' >>>a = '''Parrot''' >>>a 'Parrot'
注意
字符串开头与结尾的引号要一致。
下面的案例将字符串开头的引号使用双引号,结尾的引号使用单引号:
>>> a = "Parrot' Traceback ( File "<interactive input>", line 1 a = "Parrot' ^ SyntaxError: invalid token
可见,当字符串开头与结尾的引号不一致时,Python会显示一个invalid token的错误提示信息。
2.4.3 Sets(集合)
Sets(集合)是一个无序不重复元素的集。它的主要功能是删除重复元素和进行关系测试。创建集合时用大括号({})。例如:
>>>student = {’王平’, ’杨华’, ’王平’, ’李玉’, ’刘天怡’} >>> print(student) # 删除重复的 {’王平’, ’杨华’, ’李玉’, ’刘天怡’} >>> ’李玉’ in student # 检测成员 True >>> ’杨平’ in student False
注意
如果要创建一个空集合,必须用set()。例如:
>>>student = set()
2.4.4 List(列表)
List(列表)是Python中使用最频繁的数据类型。列表可以实现大多数集合类的数据结构。列表中元素的类型可以不相同,它支持数字、字符串甚至可以包含列表(所谓嵌套)。列表是写在方括号([])之间、用逗号分隔开的元素列表。
要创建一个列表对象,使用中括号[]来包含其元素。例如:
>>> s = [1,2,3,4]
列表对象s共有4个元素,可以使用s[0]返回第1个元素,s[1]返回第2个元素,以此类推。如果索引值超出范围,Python会抛出一个IndexError异常。例如:
>>>s = [1,2,3,4] >>>s[0] 1 >>>s[1] 2 >>>s[2] 3 >>>s[3] 4 >>>s[4] Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> s[4] IndexError: list index out of range
Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可以让Python返回倒数第一个列表元素。例如:
>>>s = [1,2,3,4] >>> s[-1] 4
在不知道列表长度情况下,上述方法很实用。依次类推,索引-2表示倒数第二个列表元素。
2.4.5 Tuple(元组)
Tuple(元组)对象属于序数对象,它是一群有序对象的集合,并且可以使用数字来做索引。元组对象与列表对象非常类似,其差别在于元组对象不可以新增、修改与删除。要创建一个元组对象,使用小括号()来包含其元素。其语法为:
variable = (element1, element2, ...)
也可以省略小括号(),直接将元素列出。
下面的例子创建一个元组对象,此元组对象有3个元素:1,2,3。
>>>t=(1,2,3) >>> t (1, 2, 3) >>>t = 1,2,3 >>>t (1, 2, 3)
与列表的索引一样,元组索引也从0开始。例如:
>>>t=(1,2,3) >>>t[0] 1
2.4.6 Dictionary(字典)
Dictionary(字典)是Python内非常有用的数据类型。字典使用大括号{}将元素列出。元素由键值(key)与数值(value)所组成,中间以冒号(:)隔开。键值必须是字符串、数字或是元组,这些对象是不可变动的。数值则可以是任何数据类型。字典的元素排列并没有一定的顺序,可以使用键值来取得该元素。
创建字典的语法格式如下:
字典变量={关键字1:值1,关键字2:值2, …}
注意
在同一个字典之内,关键字必须是互不相同的。
例如:
>>>cla={’一班’: ’李平’, ’二班’: ’黄玉’ } >>> cla [’一班’] '李平’ >>>cla [’二班’] '黄玉’ >>>cla {’二班’: ’黄玉’, ’一班’: ’李平’}