Files
PythonLearn/docs/superpowers/specs/2026-07-27-第八课列表-design.md
2026-07-28 16:19:52 +08:00

3.9 KiB
Raw Blame History

第八课“列表”教学设计

一、设计目标

第八课面向已经掌握字符串、条件判断和循环的零基础学习者,目标是让学习者理解“一个变量保存多个有序数据”的需求,并能够使用列表完成基础数据管理。

本课只讲列表,不讲元组。元组调整为独立的第九课。列表推导式保留到 Python 进阶阶段,避免本课知识密度过高。

二、课程目录

01_python基础/1_8_列表/
├── README.md
├── lists.py
└── practice.py
  • README.md:中文讲义、运行方法、常见错误、练习说明和验收标准。
  • lists.py:带有详细中文注释的可运行示例。
  • practice.py:只包含题目和提示,不预填答案。

三、知识范围

本课覆盖:

  1. 创建列表和空列表;
  2. 列表索引、负索引与切片;
  3. 使用 len() 获取元素数量;
  4. 修改指定位置的元素;
  5. 使用 append()insert() 添加元素;
  6. 使用 remove()pop()del 删除元素;
  7. 使用 in 判断成员;
  8. 使用 index()count() 查找和统计;
  9. 使用 sort()reverse() 排序和反转;
  10. 使用 for 遍历列表;
  11. 使用 range(len(...)) 在确实需要索引时遍历;
  12. 简单认识二维列表;
  13. 理解列表可变性;
  14. 区分直接赋值与浅复制列表的基础行为。

本课不覆盖:

  • 元组;
  • 列表推导式;
  • 深复制;
  • 复杂排序键;
  • 列表内部实现与性能分析。

四、教学顺序

课程按照“读取 → 修改 → 增删 → 查询 → 排序 → 遍历 → 复制”的顺序推进。

先使用字符串索引和切片作为已有知识连接点,再说明字符串不可变而列表可变。随后通过 Agent 工具名称列表演示列表的常见操作,最后介绍直接赋值导致两个变量引用同一个列表的现象。

五、示例程序

lists.py 使用 Agent 开发工具清单作为统一业务背景,依次演示:

  • 读取第一个和最后一个工具;
  • 取得列表切片;
  • 修改工具名称;
  • 添加和删除工具;
  • 查询某工具是否存在;
  • 排序并遍历工具;
  • 使用二维列表表示工具名称与用途;
  • 对比直接赋值和 copy() 的结果。

示例不要求用户输入,确保可以直接运行并稳定复现结果。

六、课堂练习

practice.py 的项目名称为“Agent 工具清单管理器”。

练习要求学习者:

  1. 创建初始工具列表;
  2. 输出长度、首项和末项;
  3. 添加两个工具;
  4. 在指定位置插入工具;
  5. 修改一个元素;
  6. 判断并删除指定工具;
  7. 使用 pop() 取得被删除的数据;
  8. 对列表排序;
  9. 遍历并输出编号;
  10. 统计指定工具出现次数;
  11. 创建列表副本并验证修改副本不影响原列表;
  12. 输出最终管理报告。

练习文件只提供中文注释、测试数据和预期核心结果,不包含参考答案。

七、错误处理边界

本课在调用 remove()index() 前先使用 in 判断,避免因元素不存在产生 ValueError

访问首尾元素前应确认列表非空。复杂异常处理将在后续课程讲解,本课使用条件判断保护常见边界。

八、验证方式

创建课程后执行:

python lists.py
python practice.py

验收要求:

  • lists.py 正常退出且输出覆盖所有主要列表操作;
  • 空白 practice.py 可以正常执行;
  • practice.py 不包含非注释答案;
  • 根目录 README.md 的当前课程更新为 1_8_列表
  • 不创建 1_9_元组 目录;
  • 不修改第六、七课文件。

九、后续课程调整

第九课单独讲解元组,重点包括创建、单元素元组、索引切片、不可变性、解包和适用场景。字典、集合及后续课程编号依次顺延,实际目录仍按照学习进度逐课创建。