Python元组(tuple)¶
元组(tuple)是Python中另一个重要的序列结构, 和列表类似, 元组也是由一系列按特定顺序排序的元素组成的.
元组和列表的不同之处在于:
- 列表的元素是可以更改的, 包括修改元素值, 删除和插入元素, 所以列表是可变序列;
- 而元组一旦被创建, 它的元素就不可更改了, 所以元组是不可变序列.
元组也可以看作是不可变的列表, 通常情况下, 元组用于保存无需修改的内容.
从形式上看, 元组的所有元素都放在一对小括号()中, 元素之间用逗号,分隔, 如下所示:
(element1, element2, ..., elementN)
其中element1~elementN表示元组中的各个元素, 个数没有限制, 只要是Python支持的数据类型就可以.
从存储内容上看, 元组可以存储整数, 实数, 字符串, 列表, 元组等任何类型的数据, 并且在同一个元组中, 元素的类型可以不同.
创建元组¶
Python提供了两种创建元组的方法.
使用()直接创建¶
通过()创建元组后, 一般使用=将其赋值给某个变量, 具体格式为:
tupleName = (element1, element2, ..., elementN)
在Python中, 元组通常都是使用一对小括号将所有元素包围起来, 但小括号不是必须的, 只要将各元素用逗号隔开, Python就会将其是位元素.
需要注意的是, 当创建的元组中只有一个元素时, 该元素后面必须要加一个逗号,, 否则Python解释器不会将其视为元组.
Example:
# 最后加上逗号
a = ('hello, world',)
print(type(a))
# 最后不加逗号
b = ('hello, world')
print(type(b))
运行结果为:
<class 'tuple'>
<class 'str'>
使用tuple()创建元组¶
除了使用()创建元组外, Python还提供了一个内置的函数tuple(), 用来将其它数据类型转换为元组类型.
tuple()的语法格式如下:
tuple(data)
其中, data表示可以转换为元组的数组, 包括字符串, 列表, range对象等(可迭代对象).
Example:
# 将字符串转换为元组
tuple1 = tuple('hello')
# 将列表转换为元组
list1 = ['Python', 'Java', 'C++']
tuple2 = tuple(list1)
# 将字典转换为元组
dict1 = {'a': 100, 'b': 200}
tuple3 = tuple(dict1)
# 将区间转换为元组
range1 = range(1, 6)
tuple4 = tuple(range1)
# 创建空元组
tuple5 = tuple()
访问元组元素¶
和列表一样, 可以使用索引(index)访问元组中的某个元素, 也可以使用切片访问元组中的一组数据(得到的是一个新的子元组).
删除元组¶
当创建的元组不再使用时, 可以通过del关键字将其删除.
总结¶
总的来说, 元组确实没有列表那么多功能, 但是元组依旧是很重要的序列类型之一, 元组的不可替代性体现在以下这些场景中:
- 元组作为很多内置函数和序列类型方法的返回值存在, 也就是说, 在使用某些函数或者方法时, 它的返回值是元组类型, 因此你必须对元组进行处理;
- 元组比列表的访问和处理速度更快, 因此, 当需要对指定元素进行访问, 且不涉及修改元素的操作时, 建议使用元组;
- 元组可以在映射中当作”键”使用, 而列表不行.