Python藏宝图代码中map列表访问为何horizontal索引为第二级?
索引顺序问题解答
核心原因:嵌套列表的存储结构是行优先
map是按行组织的嵌套列表,结构如下:
map = [ row1, # 垂直位置第1行 row2, # 垂直位置第2行 row3 # 垂直位置第3行 ]
- 第一级索引
map[行索引]的作用是选中对应行,匹配垂直方向的位置,所以必须放在索引的第一位 - 第二级索引
map[行索引][列索引]的作用是在已选中的行里定位对应列,匹配水平方向的位置,所以放在索引的第二位
为什么索引顺序和输入顺序相反
这是题目预先约定的交互规则,和Python语法无关:
题目要求用户输入两位数字,第一位是水平列号,第二位是垂直行号,比如输入23就代表要标记「第2列、第3行」的位置。因此你从输入position中拿到的第0位是列值(horizontal),第1位是行值(vertical)。
实际运行示例(输入为23):
- 解析输入得到
horizontal = 2,vertical = 3 - 计算行索引:
vertical - 1 = 2,对应map[2]也就是第三行row3 - 计算列索引:
horizontal -1 = 1,对应row3[1]也就是第三行的第二列 - 赋值后正好匹配用户输入的目标位置,符合交互预期
如果要让输入顺序和索引顺序一致,只需要修改输入提示,让用户先输入行号再输入列号即可,嵌套列表的索引顺序是由存储结构决定的,和输入规则没有强制绑定关系。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

