Python二维数组输入x y坐标赋值时行列索引颠倒问题求解
问题原因分析
- Python中用嵌套列表表示二维数组时,
tm[a][b]的第一个索引a固定对应二维数组的行号,第二个索引b对应当前行内的列号。 - 你预期的逻辑是x对应列、y对应行,但代码中写的是
tm[x][y] = "1",自然会把x作为行索引、y作为列索引处理,和预期逻辑完全相反,就出现了行列颠倒的结果。
用你给出的运行示例可以直接验证:你输入的x=4、y=5,代码执行tm[4][5] = "1",也就是修改第4行(索引从0开始计数)的第5列元素为1,和你贴出的输出结果完全匹配:输出的第5行(对应索引4)的最后一个元素(对应列索引5)为1。
修复方案
只需要调整赋值语句的索引顺序,把y放在前作为行索引,x放在后作为列索引即可:
# 把原来的 tm[x][y] = "1" 替换为下面的代码 tm[y][x] = "1"
额外提示:当前代码的行列索引都是从0开始计数的,如果你的业务逻辑要求用户输入的x、y是从1开始的常规坐标,还需要对输入值做减1处理,避免索引越界。
内容的提问来源于stack exchange,提问作者hairbrain
相关产品推荐
相关产品推荐

