本文已参与「新人创作礼」活动,一起开启掘金创作之路。
背景
对于很多 Python 初学者来说,搞懂我们每个数据的结构与作用是一件非常困难的事。
因此了解我们程序中各个基本类型的结构,表现方式,使用方法与应用是一件非常有必要的事。本文致力通过简单明了的语言来阐述基本类型元组的相关信息
介绍
元组用小括号()标识,内部元素用逗号,隔开。顾名思义,我们把多个元素组合在一起,那么它就是一个元组。
元组与列表类似也是一种容器数据类型,可以用一个变量(对象)来存储多个数据,拥有和列表及其相似的特性,不同之处在于元组的元素不能修改
定义元组
和列表的创建类似,我们可以直接通过括号包裹用逗号隔开的元素即可创建一个元组,如下方代码所示
t = (1, 2, 3)
print(type(t))
# 输出:
# <class 'tuple'>
注意:当我们创建的元组内部只有一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用,如下方代码所示
# 错误的示例
t1 = (1)
print(type(t1))
# 输出:
# <class 'int'>
# 正确的示例
t2 = (1,)
print(type(t2))
# 输出:
# <class 'tuple'>
访问元组
元组是可迭代对象,可以使用下标索引来访问元组中的值,如下方代码所示:
t = ("hello", 1, 12, False, [21, "world", True])
print(t[0])
print(t[-1])
print(t[1:4])
# 输出:
# hello
# [21, "world", True]
# (1, 12, False)
修改元组内容
上面说过,元组的元素值都不允许修改的,但是我们可以通过对两个元组相加生成一个新的包含两个元组的值的新元组,如下方代码所示
t1 = (1, 2, 3)
t2 = (7, 8, 9)
t3 = t1 + t2
print(t3)
# 输出:
# (1, 2, 3, 7, 8, 9)
元组与列表的区别
初学者会有一个疑惑,既然元组与列表如此相似,并且列表的还支持动态增删改,为什么我们还要使用这样一个无法修改的元组类型呢?
这是因为两者有不同的设计哲学
- 列表设计之初是为了保存多个相互独立的数据集合
- 元组设计之初是为了描述一个不会被改变的事务的多个属性
区别在哪
- 列表是动态的,它可变,可以随意扩容动态增删改。元组是静态的,它一旦创建就不可更改。
- 元组缓存在python运行环境,我们每次使用元组无须访问内核分配内存, 当然,在现在看来这仅仅是一个细微的好处