# 第八课“列表”教学设计 ## 一、设计目标 第八课面向已经掌握字符串、条件判断和循环的零基础学习者,目标是让学习者理解“一个变量保存多个有序数据”的需求,并能够使用列表完成基础数据管理。 本课只讲列表,不讲元组。元组调整为独立的第九课。列表推导式保留到 Python 进阶阶段,避免本课知识密度过高。 ## 二、课程目录 ```text 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`。 访问首尾元素前应确认列表非空。复杂异常处理将在后续课程讲解,本课使用条件判断保护常见边界。 ## 八、验证方式 创建课程后执行: ```powershell python lists.py python practice.py ``` 验收要求: - `lists.py` 正常退出且输出覆盖所有主要列表操作; - 空白 `practice.py` 可以正常执行; - `practice.py` 不包含非注释答案; - 根目录 `README.md` 的当前课程更新为 `1_8_列表`; - 不创建 `1_9_元组` 目录; - 不修改第六、七课文件。 ## 九、后续课程调整 第九课单独讲解元组,重点包括创建、单元素元组、索引切片、不可变性、解包和适用场景。字典、集合及后续课程编号依次顺延,实际目录仍按照学习进度逐课创建。