列表可容纳任意类型;全局变量是看不见的陷阱;循环变量覆盖参数、过早返回、辅助变量重名——函数参数的三类常见 Bug
应用辅助变量模式找列表中最长的字符串——遍历、比较长度、更新最佳值
列表嵌套语法、矩阵的先行后列索引、嵌套遍历、索引修改、游戏棋盘表示
嵌套遍历矩阵统计匹配元素个数——遍历+计数模式组合
遍历棋盘统计双方棋子数——双计数器模式,比较后返回胜负结果
检查数独某一行是否满足1-9最多出现一次——取行+查重复
检查数独某一列是否满足1-9最多出现一次——遍历行取固定列索引
检查数独3×3块是否满足1-9最多出现一次——双层range提取子网格
组合前三关函数检查全部27个约束——9行+9列+9块,全部通过才返回True
回顾列表进阶:嵌套索引、矩阵遍历、修改vs遍历、代码复用
变量不存值存引用;int/str不可变,list可变;多引用共享同一列表
用[:]拷贝列表;传列表给函数=传引用;my_list = new_list只改局部引用
.sort()原地改有副作用;sorted()返回新无副作用;纯函数概念
返回新列表,元素翻倍,不改原列表——纯函数模式
找到并删除列表中最小的元素——原地修改,无返回值
print_sudoku格式化打印棋盘;add_number原地修改棋盘——双函数
copy_and_add返回棋盘副本,不修改原棋盘——嵌套列表的深拷贝
play_turn原地落子+返回bool——x/y参数顺序与sudoku相反
transpose原地转置方阵——行列互换,读写重叠的陷阱
回顾引用与可变性:引用共享、浅深拷贝、参数陷阱、副作用
字典创建、键值类型、键的唯一性与不可变性
times_ten循环构建字典,返回键→值×10的查找表
循环构建字典——计算 1 到 n 的阶乘并存入字典
for key遍历字典 + .items()方法解包键值对
字典作计数器——统计字符出现次数并用星号打印
交互式字典应用——用 while 循环 + input 实现电话簿查号/加号/退出
字典嵌套列表——一人多号,同名追加而非覆盖
del、pop 与 clear——字典的三种删除方式
原地反转字典——键值互换
循环拼装查找表——用代码生成 0~99 的英文数字拼写字典
结构化字典——用 dict 表示电影记录,存入 list 数据库
字典列表过滤——按片名搜索,大小写不敏感
回顾 ch21:字典创建/遍历/计数/删除/结构化数据
元组创建、索引、不可变性,与列表的区别,用作字典键
综合练习——返回 (最小值, 最大值, 三数之和) 的元组
遍历元组列表——通过索引访问元组元素,找到最年长的人
过滤元组列表——按年份筛选,收集符合条件的姓名到列表
无括号元组、多返回值、解包赋值、变量交换
字典作数据库——添加学生并打印信息
元组作记录——添加课程元组到学生数据库并打印课程列表
存储与展示分离——升级打印函数,忽略0分并保留最高成绩
聚合视图——统计学生总数、最多课程者和最高均分者
挑战题——二维矩阵+从外到内逐层填充,打印同心字母方块
元组章节回顾——创建、不可变性、解包、变量交换