📌 专栏:Python零基础全套入门教程
🎯 本章定位 :元组是 Python 四大容器之二,也是面试高频考点。学会 List(可变)vs Tuple(不可变),才算真正入门 Python 容器。
✅ 学习目标
-
掌握元组的定义、取值、切片、遍历
-
理解元组 不可变特性(核心重难点)
-
掌握单元素元组坑点
-
熟练区分列表和元组的使用场景
-
掌握元组解包、数据交换高级用法
一、什么是元组 Tuple
元组是:不可变的列表
-
列表:
[]可变:支持增、删、改 -
元组:
()不可变 :定义完不能改、不能加、不能删
元组和列表一样:
-
有序序列(有下标)
-
支持任意数据类型
-
支持切片、遍历、len、in 判断
唯一区别:元组只读、不可修改。
二、元组定义语法
# 1. 普通元组
t1 = (10, 20, 30, 40)
# 2. 混合类型元组
t2 = ("小明", 18, 175.5)
# 3. 元组可以不带括号(少见但合法)
t3 = 1, 2, 3
print(t1)
print(t2)
print(t3)
🔥 新手超级大坑:单元素元组
下面这种写法 不是元组!
t = (100)
print(type(t)) # int 整数!!
定义单元素元组必须加逗号:
t = (100,)
print(type(t)) # tuple 元组
记住:逗号才是元组的灵魂,括号不是。
三、元组常用操作(查)
元组只支持查,不支持改、增、删。
3.1 下标取值
t = ("苹果", "香蕉", "橙子")
print(t[0])
print(t[-1])
3.2 切片取值
t = (11, 22, 33, 44, 55)
print(t[1:4])
print(t[:3])
print(t[::-1])
3.3 长度、成员判断
t = (10,20,30)
print(len(t))
print(20 in t)
print(99 in t)
四、元组不可变验证(核心考点)
元组内元素 不允许修改、增加、删除
❌ 以下代码全部报错
t = (10,20,30)
t[0] = 999 # 报错:不支持修改
t.append(40) # 报错:没有append方法
del t[1] # 报错:不支持删除
💡 不可变的意义
-
数据安全:重要数据防止被误改
-
代码更稳定、不易出 Bug
-
可以作为字典 key(列表不行)
五、元组遍历(for / while)
和列表遍历完全一致
5.1 for 直接遍历
t = ("张三", "李四", "王五")
for name in t:
print(name)
5.2 enumerate 带下标遍历
t = ("张三", "李四", "王五")
for idx, val in enumerate(t):
print(f"下标{idx}:{val}")
5.3 while 遍历
t = (100, 200, 300)
i = 0
while i < len(t):
print(t[i])
i += 1
六、元组高级用法(开发超常用)
6.1 元组解包
快速把元组元素赋值给多个变量
t = (10, 20)
a, b = t
print(a)
print(b)
数量必须匹配,否则报错。
6.2 变量交换(经典面试题)
a = 100
b = 200
# 一行代码交换两个变量
a, b = b, a
print(a, b)
原理:右边先打包成元组,左边解包赋值。
6.3 列表 <=> 元组互转
# 列表转元组
lst = [1,2,3]
t = tuple(lst)
# 元组转列表
t2 = (4,5,6)
lst2 = list(t2)
print(t)
print(lst2)
开发用途:不想数据被改时,转成元组保护数据。
七、列表 List vs 元组 Tuple 终极区别(面试必背)
| 特性 | 列表 List \[\] | 元组 Tuple () |
|---|---|---|
| 可变性 | 可变(增删改都可以) | 不可变(只读) |
| 速度 | 较慢 | 更快、更轻量 |
| 安全性 | 低,容易被误改 | 高,数据固定安全 |
| 常用场景 | 频繁变动的数据 | 固定不变的数据(配置、坐标、常量) |
八、本章完整综合代码
# 第五章 元组 Tuple 完整示例
# 1. 定义元组
t1 = (11, 22, 33, 44)
t2 = ("小明", 18, 172.5)
# 2. 取值与切片
print(t1[0])
print(t1[-1])
print(t1[1:3])
# 3. 遍历
for v in t2:
print(v)
# 4. 元组解包
a, b, c = (100, 200, 300)
print(a, b, c)
# 5. 类型转换
lst = [9,8,7]
new_tuple = tuple(lst)
print(new_tuple)
九、第五章课后习题 + 标准答案
基础题
-
定义一个元组保存:"张三","李四","王五",使用 for 循环全部遍历输出。
-
创建一个单元素元组,内容为 666,并打印类型验证。
-
使用切片取出元组
t = (10,20,30,40,50,60)的后三个元素。
进阶题
-
给定列表
data = [11,22,33,44],转为元组并打印。 -
使用元组解包,一次性取出元组
stu = ("小红", 20, 99)的姓名、年龄、分数并格式化输出。 -
简述:列表和元组的区别和使用场景(面试简答题)
参考答案
# 1. 遍历元组
name_tuple = ("张三", "李四", "王五")
for name in name_tuple:
print(name)
# 2. 单元素元组
num = (666,)
print(type(num))
# 3. 切片后三位
t = (10,20,30,40,50,60)
print(t[-3:])
# 4. 列表转元组
data = [11,22,33,44]
t_data = tuple(data)
print(t_data)
# 5. 元组解包
stu = ("小红", 20, 99)
name, age, score = stu
print(f"姓名:{name},年龄:{age},分数:{score}")
面试简答题答案
列表是可变序列,支持增删改查,适合数据会频繁变动的场景;元组是不可变序列,数据只读、安全、速度更快,适合固定不变的常量数据、配置数据、坐标数据。
十、下期预告
下一章:第六章 字典 Dict(Python核心重难点)
字典是以后爬虫、数据分析、接口开发、JSON 处理 用得最多 的数据结构,必学重点!
💖 点赞 + 收藏 + 关注,零基础Python系统化学习持续更新!