列表与字典:有序元素与键值计数
智能体协助练习:先写下自己的预测和实际输出,之后才可以请 AI 智能体解释或审阅,并且必须在证据中记录所受的协助。
先决条件
已完成第 08 天(包括其独立检查)。恢复:第 08 天(循环与不变量)、第 07 天活动 1(修改与重新绑定);第 07 天是本单元的复习日。
学习目标
创建并更新列表和字典,检查成员关系,用 get 安全读取不存在的键,并预测两个名字指向同一列表时的别名效果,包括空和 Unicode 的情况。
操作说明
学习来源:在本活动现有的阅读与练习时段内,参考 Automate the Boring Stuff with Python, 3rd edition 的 Chapter 6; Practice Questions; Appendix B answers,用自己的话解释一处与本地任务的联系。保留现有练习与验收检查;若外部资料无法访问,使用课程自写的解释。间隔复习热身: 凭记忆说出第 08 天的计数不变量,并解释为什么 a = [1]; b = a; a.append(2) 会改变 b。今天你会在列表上看到同样的别名现象。
新概念: list(text) 返回由码位组成的列表。列表保持元素顺序,append 在末尾添加。字典把键映射到值;d[key] = value 用于添加或替换,key in d 检查键是否存在,d.get(key, 0) 在键不存在时返回 0 而不是报错。字典会记住插入顺序。
先预测打印的每一行,再运行:
chars = list("ñu猫")
print(chars, len(chars))
print(len("n\u0303u"), "n\u0303u" == "ñu")
seen = []
for ch in "abca":
if ch not in seen:
seen.append(ch)
print(seen)
ages = {}
ages["猫"] = 3
ages["犬"] = 5
ages["猫"] = ages["猫"] + 1
print(ages, len(ages), "猫" in ages, ages.get("鳥", 0))
alias = seen
alias.append("z")
print(seen)
print(list(""), {})
练习与预测记录
写下全部六行打印内容的预测,再记录实际输出。解释为什么 len("n\u0303u") 为 3、为什么 seen 只保留每个字符的第一次出现,以及为什么通过 alias 追加也会改变 seen。
这里的 "ñ" 是一个码位;"n" 后接组合波浪符(U+0303)是两个码位。"鳥" 不是键,所以 ages.get("鳥", 0) 返回 0。alias = seen 不会复制列表;两个名字指向同一个列表对象(第 05 天)。
准确输出:
['ñ', 'u', '猫'] 3
3 False
['a', 'b', 'c']
{'猫': 4, '犬': 5} 2 True 0
['a', 'b', 'c', 'z']
[] {}
list("ñu猫") 有三个码位。分解形式的 "n\u0303u" 有三个码位,不等于两个码位的 "ñu"。循环只在字符尚未出现在 seen 中时才追加,所以结果是 ["a", "b", "c"]。给已存在的键赋值会替换其值,所以 "猫" 变为 4,字典仍然只有两个键。alias 和 seen 是同一个列表,所以 "z" 出现在 seen 中。空字符串得到空列表,{} 是空字典。
六行都在运行前预测并逐一解释不符;能解释带默认值的 get、插入顺序、分解字符的长度以及列表别名。
来源资源与出处
Automate the Boring Stuff with Python, 3rd edition
对应章节 / 时间戳: Chapter 6; Practice Questions; Appendix B answers
验证版本与日期: Public edition checked 2026-11-01; moving pages may change
Beginner teaching and answer-keyed practice before checking exact semantics in the Python reference; selected chapters only, not the book's entire automation stack.
No prior programming required for Chapter 1; later chapters assume its basic Python concepts.
Use the original localized explanations, exercises and checks already present in this activity; no external account or purchase is required for that fallback.
对比候选资源与选型分析 (2)
Guided Python syntax but assumes programming familiarity; paired with the beginner text rather than used as its replacement.
Lectures and problem sets teach a broader CS1 course; the book offers shorter text-first entry and an answer appendix.
The Python Tutorial: More Control Flow Tools
对应章节 / 时间戳: 第 4.2–4.10 节(for、range、定义函数);数据结构见同一教程第 5 章
验证版本与日期: Python 3.12 文档(核验日期:2026-10-30)
用于查阅 Python 迭代、函数和容器的第一手参考资料。
第 01–06 天的 Python 表达式与文件系统基础
教材内已讲解所有必需的行为,可以离线完成。
对比候选资源与选型分析 (2)
在语法层面定义相同的结构;选择教程章节是因为它循序渐进。
以讲座节奏讲解相同的控制流;由于本课程已通过终端练习推进这些概念,暂不采用。