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

Python二维列表元素修改异常求助:为何修改一行全表变更?

为什么修改二维列表会所有行同步变化?

这不是Python解释器的问题,是你创建二维列表的方式踩了Python的引用坑。

你用l = [["0"]*3]*3创建列表时,*3并没有生成三个独立的子列表,而是把同一个["0","0","0"]列表的引用重复了三次。也就是说,你的二维列表里的三个子列表其实指向内存中的同一个对象,修改其中任何一个子列表的元素,另外两个都会跟着变化——因为它们本质上是同一个东西。

正确的创建方式

要生成三个独立的子列表,推荐用列表推导式:

l = [["0"]*3 for _ in range(3)]

这种写法会循环3次,每次都生成一个新的["0","0","0"]子列表,三个子列表是完全独立的对象。

也可以直接手动逐个定义:

l = [["0","0","0"], ["0","0","0"], ["0","0","0"]]

验证效果

用正确的方式创建后,再执行你的修改代码:

for i in range(3):
  l[0][i] = "1"

结果只会修改第一行:

[['1', '1', '1'],
 ['0', '0', '0'], 
 ['0', '0', '0']]

单独修改元素l[1][1] = 1时,也只会改变第二行的第二个元素:

[['0', '0', '0'], 
 ['0', 1, '0'], 
 ['0', '0', '0']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:27:30