大家好,这里是零基础 Python 系统教程第 7 天! 前一天我们学习了 while 循环基础,今天拓展两种全新数据容器:元组 tuple和集合 set,同时对比列表、字典,一次性分清四大容器的使用场景。 全程无复杂语法,代码附带逐行注释,新手跟着敲就能看懂,文末配套分层练习题,练完直接吃透容器核心知识点。
while 循环定位:未知循环次数、依靠条件真假控制循环,和 for 循环互补;for 循环适合已知次数、遍历序列。
while 循环执行逻辑 while 循环依靠布尔条件控制循环,循环体内必须手动更新循环变量,否则触发死循环。
# 逐行注释演示:打印1-5i = 1 # 初始化循环变量while i <= 5: # 循环条件,满足则执行内部代码print(i)i = i + 1 # 变量自增,更新条件,避免死循环
breakcontinue# continue易错演示(错误版)i = 1while i <= 5:if i == 3:continue # 跳过i=3,i永远不更新,死循环print(i)i += 1# continue正确写法(先自增再判断)i = 0while i < 5:i += 1if i == 3:continueprint(i)
while True 固定搭配break作为出口,适用于交互、菜单类程序:# 简易菜单程序while True:num = int(input("输入0退出程序:"))if num == 0:print("程序结束")break
今日学习目标
掌握元组 tuple 的创建、索引切片、不可变特性与常用方法;
分清单元素元组易错坑,学会元组解包、元组充当字典键的用法;
掌握集合 set 创建、自动去重特性、增删操作、交并差数学运算;
区分空集合set()与空字典{}的写法,规避集合索引报错问题;
熟练列表、元组、集合、字典四种容器互相转换;
通过表格对比四大容器有序性、可变性、适用场景,学会按需选择;
完成数据去重、坐标存储、集合运算综合实战案例;
完成课后分层习题,巩固元组与集合核心考点。
1. 核心定义与语法
元组是有序、不可变、允许重复元素的序列容器,使用圆括号()包裹,逗号分隔元素。
核心特点:创建完成后,无法增、删、修改内部元素,数据更安全、占用内存更小。
# 1. 创建空元组t1 = ()t2 = tuple()# 2. 普通多元素元组person = ("小明", 18, "男生")# 3. 无括号简写元组(逗号是核心标识)point = 10, 20# 4. 重点易错:单元素元组必须加逗号!num = (5,) # 正确,类型tuplewrong = (5) # 错误,仅为数字int
2. 基础操作:索引、切片、遍历
元组和列表一致,支持下标索引、切片取值,不支持修改赋值。
t = (2, 4, 6, 8, 10)print(t[0]) # 取第一个元素 2print(t[-1]) # 取最后一个元素 10print(t[1:3]) # 切片 (4,6)# for循环遍历元组for i in t:print(i)
3. 不可变特性(高频踩坑)
元组整体不能修改元素,直接赋值会报错;但元组内嵌套列表,列表本身可以修改。
t = (1, 2, [3, 4])# t[0] = 99 # 报错:元组元素不可直接修改t[2][0] = 99print(t) # 输出 (1, 2, [99, 4])
4. 元组仅有的两个内置方法
元组不可变,仅提供查询方法,无增删改操作:
count(元素):统计元素出现次数
index(元素):返回元素第一次出现的下标
t = (1, 3, 3, 5)print(t.count(3)) # 2print(t.index(5)) # 3
5. 元组实用拓展:解包、字典键
x, y = (10, 20)print(x, y)# 无需临时变量交换数值a, b = 1, 2a, b = b, aprint(a, b)
pos = {(0,0): "原点", (1,1): "第一象限"}print(pos[(0,0)])
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 三者可互相转换,转换特性:
lst = [1,2,2,3]t = tuple(lst) # 列表转元组s = set(lst) # 列表转集合new_lst = list(s) # 集合转列表
一张表分清列表、元组、字典、集合的适用场景,写代码时不会再混淆,建议截图保存。
选择口诀
要频繁修改有序数据用列表;
数据固定不改动、安全存储用元组;
需要快速去重、集合运算用集合;
一一对应键值信息查询用字典。
七、综合实战案例
案例 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 & class2print("共同学生:", same)
八、今日高频易错点汇总
1. 单元素元组必须写(5,),(5)只是数字;
2. 空集合不能写{},{}是空字典,空集合用set();
3. 集合无序,不支持下标索引取值;
4. 元组整体不可修改,但内部嵌套列表可以修改列表内容;
5. 列表、集合不能作为字典 key,只有元组、字符串等不可变类型可以;
6. 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 全解,映射存储核心容器
公众号福利 & 原创声明
✅ 回复【第7天源码】
领取本章全套可运行源码 + 课后练习题
每节课都配套课后练习题与完整源码。代码报错、看不懂知识点,可在评论区粘贴问题,逐一解答!
欢迎关注梅雅达编程笔记,持续分享Python零基础学习内容
本文为梅雅达编程笔记原创零基础 Python 连载笔记
禁止私自搬运、二次转载,转发请标注来源。