Python零基础入门 | 第7天 元组、集合与循环控制,四大容器一次性理清
大家好,这里是零基础 Python 系统教程第 7 天! 前一天我们学习了 while 循环基础,今天拓展两种全新数据容器:元组 tuple和集合 set,同时对比列表、字典,一次性分清四大容器的使用场景。 全程无复杂语法,代码附带逐行注释,新手跟着敲就能看懂,文末配套分层练习题,练完直接吃透容器核心知识点。
while 循环核心回顾
-
while 循环定位:未知循环次数、依靠条件真假控制循环,和 for 循环互补;for 循环适合已知次数、遍历序列。
-
while 循环执行逻辑 while 循环依靠布尔条件控制循环,循环体内必须手动更新循环变量,否则触发死循环。
# 逐行注释演示:打印1-5
i = 1 # 初始化循环变量
while i <= 5: # 循环条件,满足则执行内部代码
print(i)
i = i + 1 # 变量自增,更新条件,避免死循环
- 循环控制关键字
break:直接终止整个循环,跳出循环块continue:跳过本次循环剩余代码,直接进入下一轮;搭配 while 必须先自增变量
# continue易错演示(错误版)
i = 1
while i <= 5:
if i == 3:
continue # 跳过i=3,i永远不更新,死循环
print(i)
i += 1
# continue正确写法(先自增再判断)
i = 0
while i < 5:
i += 1
if i == 3:
continue
print(i)
- while 无限循环
while True固定搭配break作为出口,适用于交互、菜单类程序:
# 简易菜单程序
while True:
num = int(input("输入0退出程序:"))
if num == 0:
print("程序结束")
break
- for 与 while 场景区分(选择口诀:已知次数遍历用 for;未知交互、条件控制用 while。)
- for 循环:已知循环次数、遍历容器(列表 / 元组 / 集合)
- while 循环:未知循环次数、持续交互、条件持续满足场景
二、今日学习目标
-
掌握元组 tuple 的创建、索引切片、不可变特性与常用方法;
-
分清单元素元组易错坑,学会元组解包、元组充当字典键的用法;
-
掌握集合 set 创建、自动去重特性、增删操作、交并差数学运算;
-
区分空集合set()与空字典{}的写法,规避集合索引报错问题;
-
熟练列表、元组、集合、字典四种容器互相转换;
-
通过表格对比四大容器有序性、可变性、适用场景,学会按需选择;
-
完成数据去重、坐标存储、集合运算综合实战案例;
-
完成课后分层习题,巩固元组与集合核心考点。
元组 tuple ()基础详解
1. 核心定义与语法
元组是有序、不可变、允许重复元素的序列容器,使用圆括号()包裹,逗号分隔元素。
核心特点:创建完成后,无法增、删、修改内部元素,数据更安全、占用内存更小。
# 1. 创建空元组
t1 = ()
t2 = tuple()
# 2. 普通多元素元组
person = ("小明", 18, "男生")
# 3. 无括号简写元组(逗号是核心标识)
point = 10, 20
# 4. 重点易错:单元素元组必须加逗号!
num = (5,) # 正确,类型tuple
wrong = (5) # 错误,仅为数字int
2. 基础操作:索引、切片、遍历
元组和列表一致,支持下标索引、切片取值,不支持修改赋值。
t = (2, 4, 6, 8, 10)
print(t[0]) # 取第一个元素 2
print(t[-1]) # 取最后一个元素 10
print(t[1:3]) # 切片 (4,6)
# for循环遍历元组
for i in t:
print(i)
3. 不可变特性(高频踩坑)
元组整体不能修改元素,直接赋值会报错;但元组内嵌套列表,列表本身可以修改。
t = (1, 2, [3, 4])
# t[0] = 99 # 报错:元组元素不可直接修改
t[2][0] = 99
print(t) # 输出 (1, 2, [99, 4])
4. 元组仅有的两个内置方法
-
元组不可变,仅提供查询方法,无增删改操作:
-
count(元素):统计元素出现次数 -
index(元素):返回元素第一次出现的下标
t = (1, 3, 3, 5)
print(t.count(3)) # 2
print(t.index(5)) # 3
5. 元组实用拓展:解包、字典键
- 解包赋值(交换变量经典用法)
x, y = (10, 20)
print(x, y)
# 无需临时变量交换数值
a, b = 1, 2
a, b = b, a
print(a, b)
- 元组可作为字典 key(列表不行)
pos = {(0,0): "原点", (1,1): "第一象限"}
print(pos[(0,0)])
四、集合 set 基础详解
1. 核心定义与语法
集合是无序、可变、元素唯一的容器,自动去除重复数据,适合去重、数学集合运算。
⚠️ 重点区分:{}是空字典,空集合必须写set()
# 空集合
s1 = set()
# 普通集合,自动去重
s2 = {1, 2, 2, 3, 3, 3}
print(s2) # {1,2,3}
# 列表转集合快速去重
lst = [1,1,2,3,3]
s3 = set(lst)
2. 核心易错点:无序、无索引
集合没有顺序,不能通过下标取值,直接s[0]会报错,只能遍历。
s = {5, 1, 3}
# print(s[0]) # 报错!集合不支持索引
for i in s:
print(i)
3. 集合增删常用方法
s = {1,2,3}
s.add(4) # 添加单个元素,重复元素自动忽略
s.update([5,6]) # 批量添加多个元素
s.remove(3) # 删除指定元素,不存在会报错
s.discard(99) # 删除元素,不存在不报错
s.pop() # 随机删除一个元素
s.clear() # 清空集合
4. 集合数学运算(交集、并集、差集)
s1 = {1,2,3,4}
s2 = {3,4,5,6}
print(s1 & s2) # 交集&:两边共有 {3,4}
print(s1 | s2) # 并集|:合并全部不重复 {1,2,3,4,5,6}
print(s1 - s2) # 差集-:s1独有 {1,2}
print(s1 ^ s2) # 对称差 {1,2,5,6} 互不相同部分
五、四大容器互相转换
list、tuple、set 三者可互相转换,转换特性:
- 列表 / 元组转集合:自动去重、丢失原有顺序;
- 集合转列表 / 元组:顺序随机;
- 字典仅能转换 key 集合,无法直接完整转集合。
lst = [1,2,2,3]
t = tuple(lst) # 列表转元组
s = set(lst) # 列表转集合
new_lst = list(s) # 集合转列表
四大数据容器完整对比表(选型核心)
一张表分清列表、元组、字典、集合的适用场景,写代码时不会再混淆,建议截图保存。
| 容器 | 符号 | 有序 | 可修改 | 元素重复 | 下标索引 | 核心用途 |
|---|---|---|---|---|---|---|
| 列表 list | [] | 是 | 可变 | 允许 | 支持 | 频繁增删有序数据 |
| 元组 tuple | () | 是 | 不可变 | 允许 | 支持 | 固定不变数据(坐标、配置) |
| 字典 dict | {k:v} | 3.7 + 有序 | 可变 | 键不重复 | 按键取值 | 映射关系(姓名 - 年龄) |
| 集合 set | {} | 无序 | 可变 | 不允许 | 不支持 | 数据去重、集合对比 |
选择口诀
要频繁修改有序数据用列表;
数据固定不改动、安全存储用元组;
需要快速去重、集合运算用集合;
一一对应键值信息查询用字典。
七、综合实战案例
案例 1:列表快速去重(集合经典用法)
# 原始重复成绩列表
score = [88, 90, 88, 76, 90, 95]
# 转集合去重,再转回列表
unique_score = list(set(score))
print("去重后成绩:", unique_score)
案例 2:坐标存储(元组专属场景)
# 存储多个坐标点,数据固定不修改
points = ((1,2), (3,4), (5,6))
# 解包读取坐标
x, y = points[0]
print("横坐标:", x, "纵坐标:", y)
案例 3:求两个班级共同学生(集合交集)
class1 = {"张三","李四","王五"}
class2 = {"李四","赵六","张三"}
# 两个班级都有的学生
same = class1 & class2
print("共同学生:", same)
八、今日高频易错点汇总
- 单元素元组必须写(5,),(5)只是数字;
- 空集合不能写{},{}是空字典,空集合用set();
- 集合无序,不支持下标索引取值;
- 元组整体不可修改,但内部嵌套列表可以修改列表内容;
- 列表、集合不能作为字典 key,只有元组、字符串等不可变类型可以;
- continue 场景下更新变量在前,while 循环防止死循环。
📖 往期历史笔记
Python 学习笔记|零基础第 1 天:Windows 系统完整安装教程 + 报错解决
Python 学习笔记| 第2天 Python Windows安装教程:VS Code 完整配置开发环境
Python零基础入门|第3天 Python变量、数据类型与输入输出
Python零基础入门| 第4天:字符串索引切片+列表完整增删改查
Python 零基础入门|第 5 天 for 循环与 range、break/continue
下一章预告
Python 零基础入门 |第8天:字典 dict 全解,映射存储核心容器
本专栏会连续更新20天完整Python零基础教程,覆盖入门语法、数据结构、办公自动化、爬虫实战全阶段,
每节课都配套课后练习题与完整源码。代码报错、看不懂知识点,可在评论区粘贴问题,逐一解答!
欢迎关注梅雅达编程笔记,持续分享Python零基础学习内容
本文为梅雅达编程笔记原创零基础 Python 连载笔记
禁止私自搬运、二次转载,转发请标注来源。
更多推荐
所有评论(0)