Python元组对象入门

班级新来了一个女同学 Joe ,如果要记录她的名字、性别和年龄,可以选用 Python 的哪种数据类型来存储呢?

概述

实际上, Python 提供了一种数据类型 —— 元组tuple ) ,可以很好地存储此类数据。 元组是一种 有序集合,用 () 号将元素包含在内,各个元素之间以 逗号 隔开。

例如,我们可以这样来存储 Joe 的信息:

>>> student = ('Joe', 'female', 20)

访问

Python列表对象入门 一节,我们知道了如何使用 下标 访问列表元素。 其实,我们也可以通过下标来访问元组的元素。 例如,Joe 的年龄在元组中的下标是 2,因此,可以这么获取数据:

>>> student[2]
20

看到这里,有没有发现元组和列表的结构很相似? 两者都是有序集合,并且可以通过下标来访问元素。 那么,元组有什么特别的吗?

不可变

与列表不同,元组是一种不可变的数据类型。 那不可变怎么解读呢? 我们先尝试改变 Joe 的年龄,看看会发生什么?

>>> student[2] = 21
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

程序报错了!很明显,我们并没有成功改变 Joe 的年龄:

>>> student[2]
20

通过以上的例子,我们可以知道,不可变指的是不可改变元组内的元素。 也就是说,元组内的元素在一开始创建后,便不可改变。

遍历

元组与列表一样,也是可迭代对象。因此可以用 for 语句对元组进行遍历:

>>> for item in student:
...     print(item)
...
Joe
female
20

我们通过遍历,将元组内的元素依次打印到屏幕上。

删除

元组内元素不可变,自然也是不可删除。 但是,我们可以使用 del 关键字,来删除整个元组。

>>> del student
>>> student
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
NameError: name 'student' is not defined

这里,我们已经成功删除了 student 这个元组。 因此,访问时会报未定义的错误。

创建单个元素

如果我们要创建的元组只有一个元素,那该怎么做呢? 你们也许会想,这不是很简单吗?直接敲了下面这行代码:

>>> a = (50)

等等,真的是这样吗? 我们来看看创建的 a 到底是不是元组类型:

>>> type(a)
<class 'int'>

很显然,aint 类型,并不是一个 tuple

实际上,这里的 () 被当做运算符来使用。 a = (50) 等价于 a = 50 。

那该如何创建只有一个元素的元组呢?我们只需在元素后面加个逗号即可,以区分 () 的作用:

>>> b = (50,)
>>> type(b)
<class 'tuple'>

附录

订阅更新,获取更多学习资料,请关注我们的 微信公众号

微信搜索:小菜学编程

创作不易,如果觉得我们写得还行,就请我们喝杯咖啡吧😋

微信搜索:小菜学编程