元组是 Python 中有序、不可变的元素集合,元素可重复、类型不限(如数字、字符串、元组等),因不可变特性,比列表更高效、安全,常用来存储无需修改的数据。
- 直接赋值(小括号包裹):元素间用
, 分隔,小括号可省略(单元素元组必须加 ,,否则会被识别为普通数据类型)。
示例 1:t1 = (1, "apple", True, (2, 3))(嵌套元组)
示例 2(省略括号):t2 = 10, 20, 30(等同于 (10,20,30))
示例 3(单元素元组):t3 = (5,)(必须加 ,,否则 (5) 是整数 5)
tuple() 函数:通过可迭代对象(如列表、字符串、集合)创建,空元组也可直接用 ()。
示例 1(列表转元组):t4 = tuple([1,2,3]) # 结果 (1,2,3)
示例 2(空元组):empty_tuple = tuple() # 或直接写 empty_tuple = ()
元组有序,可通过索引(从 0 开始)或切片([start:end:step])访问元素,规则与列表、字符串一致。
示例:
t = (10, 20, 30, 40, 50)
print(t[0])
元组创建后,无法增、删、改元素,否则会报错 TypeError(这是元组与列表的核心区别)。
错误示例:
- 拼接:用
+ 连接两个元组,生成新元组(原元组不变)。
示例:t5 = (1,2) + (3,4) # 结果 (1,2,3,4)
- 重复:用
* 重复元组元素,生成新元组(原元组不变)。
示例:t6 = (1,2) * 3 # 结果 (1,2,1,2,1,2)
用 len() 函数获取元组中元素的个数。
示例:print(len(t)) # 输出 5(元组 t 有5个元素)
元组因不可变,方法较少,核心方法只有 2 个:
count(value):统计指定元素在元组中出现的次数。
示例:t7 = (1,2,2,3,2);print(t7.count(2)) # 输出 3
index(value, start=0, end=len(tuple)):查找指定元素在元组中首次出现的索引,可指定查找范围(start 到 end-1);若元素不存在,报错 ValueError。
示例:print(t7.index(3)) # 输出 3(元素3首次在索引3出现)
直接用 for 循环遍历,顺序与元素插入顺序一致(因元组有序)。
示例:
for elem in t:
print(elem)
(2)判断元素是否存在
用 in(存在)或 not in(不存在),效率高于列表(因元组底层结构更简单)。
示例:
- 作为字典的键:因元组不可变,可作为字典的键(列表可变,不能作为字典键)。
示例:dict1 = {(1,2): "坐标", "name": "Alice"}
- 函数返回多值:Python 函数若需返回多个值,本质是返回一个元组(可自动解包)。
示例:
def get_info():
return "Bob", 25
- 保护数据不被修改:若数据无需修改(如配置信息、固定列表),用元组可避免误操作导致的修改(比列表更安全)。
- 单元素元组必须加
,:(5) 会被识别为整数 5,只有 (5,) 才是元组。
- 元组不可变,但元素可变(若元素是可变类型):若元组包含列表、字典等可变元素,元素内部可修改(元组本身的 “不可变” 指元素的引用不可变)。
示例:
t8 = (1, [2,3])
t8[1].append(4)
- 元组与列表的转换:用
tuple(list) 将列表转元组,用 list(tuple) 将元组转列表(转换后生成新对象,原对象不变)。