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

Python中2D数组赋值时所有行同步修改的原因咨询

问题核心原因

你创建二维数组的写法matrix = [[0]*n]*n存在逻辑问题:Python中*操作符对列表做乘法时,只会复制列表的引用,不会生成新的独立列表。也就是说你的matrix变量里存储的n个行,本质上是同一个列表对象的多次引用,修改任意一行的元素,所有行都会同步变化。

疑问解答

  • 疑问1:我仅将matrix[0][1]赋值为6,为什么输出中每一行的第二个元素都变成了6?
    答:因为所有行指向同一个列表,修改第0行的第2个元素,等价于直接修改这个共享列表的第2个元素,所有引用这个列表的行都会同步更新。
  • 疑问2:第一个while循环中我仅对第一行元素进行了赋值,为什么所有行都被写入了相同的数据?
    答:你给第一行赋值的操作本质上是给共享列表赋值,所有引用这个列表的行都会显示相同的内容。

修复方案

把二维数组的创建逻辑改成列表推导式,确保每一行都是独立的新列表:

matrix = [[0]*n for _ in range(n)]

替换原有的matrix = [[0]*n]*n即可解决问题。


内容的提问来源于stack exchange,提问作者Lalit Bhardwaj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:00:01