Python程序设计案例课堂
上QQ阅读APP看书,第一时间看更新

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
        {’二班’: ’黄玉’, ’一班’: ’李平’}