You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中嵌套列表通过索引赋值时无法正确替换值是什么原因?

问题原因

你的代码问题出在二维列表的初始化逻辑上。Grid = [[0] * 5] * 5这行代码并没有生成5个独立的子列表,只是生成了5个指向同一个子列表的引用。Python中列表属于可变对象,用*运算符复制列表时,只会复制列表的引用而不是复制列表本身的内容,因此Grid里存储的5个元素本质是同一个列表对象。
当你执行Grid[ObY][ObX] = 1操作时,实际上修改的是这个公共子列表的对应位置,所有指向它的引用都会同步显示修改结果,才会出现所有行的ObX位置都变成1的现象。你可以通过打印id(Grid[0])和id(Grid[1])验证,原写法两个输出值完全相同,说明是同一个对象。

修复方案

把列表初始化的代码替换为列表推导式写法即可,保证每一行都是独立的新列表:

Grid = [[0] * 5 for _ in range(5)]

修改后你再执行赋值操作,就只会修改索引为ObY的那一行的对应位置,符合你的预期输出。

内容的提问来源于stack exchange,提问作者A S Arrowsmith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:36:01