当前位置:首页>python>Python零基础入门 | 第7天 元组、集合与循环控制,四大容器一次性理清

Python零基础入门 | 第7天 元组、集合与循环控制,四大容器一次性理清

  • 2026-10-11 06:36:23
Python零基础入门 | 第7天 元组、集合与循环控制,四大容器一次性理清

大家好,这里是零基础 Python 系统教程第 7 天! 前一天我们学习了 while 循环基础,今天拓展两种全新数据容器:元组 tuple和集合 set,同时对比列表、字典,一次性分清四大容器的使用场景。 全程无复杂语法,代码附带逐行注释,新手跟着敲就能看懂,文末配套分层练习题,练完直接吃透容器核心知识点。

while 循环核心回顾

  1. while 循环定位:未知循环次数、依靠条件真假控制循环,和 for 循环互补;for 循环适合已知次数、遍历序列。

  2. while 循环执行逻辑 while 循环依靠布尔条件控制循环,循环体内必须手动更新循环变量,否则触发死循环。

# 逐行注释演示:打印1-5i = 1  # 初始化循环变量while i <= 5:  # 循环条件,满足则执行内部代码    print(i)    i = i + 1  # 变量自增,更新条件,避免死循环
  1. 循环控制关键字
  • break
    :直接终止整个循环,跳出循环块
  • continue
    :跳过本次循环剩余代码,直接进入下一轮;搭配 while 必须先自增变量
# continue易错演示(错误版)i = 1while i <= 5:    if i == 3:        continue  # 跳过i=3,i永远不更新,死循环    print(i)    i += 1# continue正确写法(先自增再判断)i = 0while i < 5:    i += 1    if i == 3:        continue    print(i)
  1. while 无限循环 while True 固定搭配break作为出口,适用于交互、菜单类程序:
# 简易菜单程序while True:    num = int(input("输入0退出程序:"))    if num == 0:        print("程序结束")        break
  1. for 与 while 场景区分(选择口诀:已知次数遍历用 for;未知交互、条件控制用 while。)
  • for 循环:已知循环次数、遍历容器(列表 / 元组 / 集合)
  • while 循环:未知循环次数、持续交互、条件持续满足场景

今日学习目标

  1. 掌握元组 tuple 的创建、索引切片、不可变特性与常用方法;

  2. 分清单元素元组易错坑,学会元组解包、元组充当字典键的用法;

  3. 掌握集合 set 创建、自动去重特性、增删操作、交并差数学运算;

  4. 区分空集合set()与空字典{}的写法,规避集合索引报错问题;

  5. 熟练列表、元组、集合、字典四种容器互相转换;

  6. 通过表格对比四大容器有序性、可变性、适用场景,学会按需选择;

  7. 完成数据去重、坐标存储、集合运算综合实战案例;

  8. 完成课后分层习题,巩固元组与集合核心考点。

元组 tuple ()基础详解

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)
  • 元组可作为字典 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 三者可互相转换,转换特性:

  1. 列表 / 元组转集合:自动去重、丢失原有顺序;
  2. 集合转列表 / 元组:顺序随机;
  3. 字典仅能转换 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 & 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零基础入门|第6天 while条件循环

下一章预告

Python 零基础入门 |第8天:字典 dict 全解,映射存储核心容器

公众号福利 & 原创声明

✅ 回复【第7天源码】

领取本章全套可运行源码 + 课后练习题

每节课都配套课后练习题与完整源码。代码报错、看不懂知识点,可在评论区粘贴问题,逐一解答!

欢迎关注梅雅达编程笔记,持续分享Python零基础学习内容

本文为梅雅达编程笔记原创零基础 Python 连载笔记

禁止私自搬运、二次转载,转发请标注来源。

最新文章

随机文章