元组型对象(tuple)
一. 元组基础
元组(tuple)是Python中一类非常重要的容器型对象。它与列表的功能非常类似,但最核心的区别在于:元组是不可变对象类型。正因为其不可变性,适当使用元组将很大程度上确保代码运行的稳定性。
1. 元组的创建
通常使用小括号 () 来标注和创建元组。
(1).直接创建
python
# 可存放不同类型的对象
t = ('Hi', 1, print, (1, 2), [1, 2])
(2).空元组与单元素元组
创建只包含一个元素的元组时,必须在元素后加上逗号,否则 Python 会将其视作普通的运算括号(即原数据类型)。
python
# 空元组
t_empty = ()
# 易错点辨析
type((1)) # 结果为 int,这只是一个加了括号的整数
type((1, )) # 结果为 tuple,这才是正确的单元素元组创建方式
(3).使用 tuple() 函数
通过 tuple() 函数可以将其他可迭代对象(如列表、字符串等)转化为元组。
python
# 将列表转化为元组
tuple([1, 2]) # 结果为 (1, 2)
# 将字符串转化为元组
tuple('Hello') # 结果为 ('H', 'e', 'l', 'l', 'o')
(4).结合 range() 函数创建
和列表一样,当需要创建具有一定分布规律数值的元组时,也可借助 range() 函数来实现。
python
# range(start, stop, step) 规则与列表一致,左闭右开
tuple(range(5)) # (0, 1, 2, 3, 4)
tuple(range(2, 5)) # (2, 3, 4)
tuple(range(5, 2, -2)) # (5, 3)
2. 基础索引与切片
元组的索引和切片方法与列表、字符串完全一致。
- 正向索引 :
t[2]获取第三个元素。 - 反向索引 :
t[-1]获取最后一个元素。 - 切片 :
t[1:3]获取索引1到2的元素。 - 反向切片 :
t[::-2]反向每隔一个取一个元素。
3. 元组的不可变性
元组是不支持原地修改的容器。不能向元组中增加元素,不能删除元素,也不能修改元素
注:元组的不可变,本质上是指元组中每个元素的"指向"永远不变。
如果元组中包含了一个可变对象(如列表),虽然你不能改变这个元组指向另一个列表,但你可以修改这个内部列表里的元素内容:
python
# t1 的普通元素不支持修改
t1 = (0, 1, 2)
t1[1] = 0 # 报错:TypeError: 'tuple' object does not support item assignment
# t2 中包含了一个可变的列表对象
t2 = ('a', 'b', ['A', 'B'])
# 我们不能修改 t2[2] 指向其他的对象,但可以修改 t2[2] 这个列表内部的值
t2[2][0] = 'X'
t2[2].append('Z')
print(t2) # 输出: ('a', 'b', ['X', 'B', 'Z'])
二. 元组方法与操作
1. 运算符 (+, *) - 元组拼接与复制
作用:元组支持加法 + 和乘法 * 运算符。加法用于合并两个元组,乘法用于将元组元素复制拼接。
python
tuple1 + tuple2
tuple * n
参数:
- 无特定函数参数,属于运算符。
返回值:
- 成功: 返回一个新的元组对象(tuple),原元组不发生改变。
示例:
python
t1 = (1, 3, 4)
t2 = (1, 'Hi')
# 加法拼接
t1 + t2 # 结果为 (1, 3, 4, 1, 'Hi')
# 乘法复制
t2 * 2 # 结果为 (1, 'Hi', 1, 'Hi')
2. count - 统计元素次数
作用:统计指定值在元组内出现的总次数。
python
tuple.count(value)
参数:
- 值 (value): 需要被统计的目标元素(Any)。
返回值:
- 成功: 返回该元素在元组中出现的整数次数(int)。
示例:
python
t = (0, 1, 2, 3, 1, 3)
# 统计元素 3 在元组中出现的次数
t.count(3)
# 结果为 2
3. index - 查找首次出现的索引
作用:根据内容查找对应的索引,返回指定值在元组中第一次出现的索引位置。
python
tuple.index(value, start=0, end=len(tuple))
参数:
- 值 (value): 需要查找的目标元素(Any)。
- 起始索引 (start): 可选,查找区间的起点(包含)(int)。
- 结束索引 (end): 可选,查找区间的终点(不包含)(int)。
返回值:
- 成功: 返回查找到的第一次出现的整数下标(int)。找不到则报错。
示例:
python
t = (0, 1, 2, 3)
# 查找元素 3 第一次出现的索引
t.index(3)
# 结果为 3
4. in 关键字 - 判断元素是否存在
作用:判断某元素是否存在于元组中。
python
value in tuple
参数:
- 值 (value): 需要判断的目标元素(Any)。
- 元组 (tuple): 被查找的目标容器(tuple)。
返回值:
- 成功: 存在返回布尔值
True,不存在返回False(bool)。
示例:
python
t = (0, 1, 2, 3)
# 检查 3 是否在元组中
3 in t # 结果为 True
# 检查 4 是否在元组中
4 in t # 结果为 False