Python零基础入门第五章:元组Tuple(不可变容器详解、列表与元组区别)

📌 专栏: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)

九、第五章课后习题 + 标准答案

基础题

  1. 定义一个元组保存:"张三","李四","王五",使用 for 循环全部遍历输出。

  2. 创建一个单元素元组,内容为 666,并打印类型验证。

  3. 使用切片取出元组 t = (10,20,30,40,50,60) 的后三个元素。

进阶题

  1. 给定列表 data = [11,22,33,44],转为元组并打印。

  2. 使用元组解包,一次性取出元组 stu = ("小红", 20, 99) 的姓名、年龄、分数并格式化输出。

  3. 简述:列表和元组的区别和使用场景(面试简答题)

参考答案

复制代码
# 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系统化学习持续更新!

相关推荐
zhanghaha13141 小时前
Python进阶教程:13_math 模块 —— 新手完全指南
数据库·python·机器学习
2601_965798471 小时前
Build a Fast, High-Ranking Restaurant Website with Rolanda Theme
开发语言·ios·swift
caimouse1 小时前
ReactOS 窗口系统分析(25):标题栏显示与系统按钮 — nonclient.c 标题栏专题
c语言·开发语言
诺伦1 小时前
Rust 错误处理实战:从 unwrap 到优雅 Result 的进阶之路
开发语言·后端·rust
aiqianji1 小时前
教AI短篇小说写作的软件操作简单,该怎么挑选呢?
人工智能·python
caimouse2 小时前
ReactOS 窗口系统分析(14):计时器/属性/加速键/热键 — timer.c + prop.c + accelerator.c + hotkey.c
c语言·开发语言·reactos
circuitsosk2 小时前
Python 模块与包管理:import 机制、虚拟环境与 pip 完全指南
开发语言·python·pip·依赖管理·模块与包
就叫飞六吧2 小时前
两道门:X-Frame-Options 和 SameSite 到底谁管什么
开发语言·chrome·ai编程