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

Python创建4x5二维数组修改元素时所有行同步变更的问题求助

Python二维数组修改元素时所有行同步变化的问题解决

你用[[0]*cols]*rows创建二维数组的方式存在本质问题:*rows并没有生成4个独立的列表,而是让数组里的每一行都指向同一个列表对象。所以你修改任意一行的元素,其他行因为引用的是同一个对象,自然会跟着同步变化。

可以通过打印每行的内存地址验证这一点:

rows, cols = (4,5)
arr = [[0]*cols]*rows
print(id(arr[0]), id(arr[1]), id(arr[2]), id(arr[3]))

输出的四个id完全相同,说明四行是同一个列表的引用。

正确的创建方式

1. 列表推导式(推荐)

这种方式会在每次循环中生成一个新的列表,确保每行都是独立对象:

rows, cols = (4,5)
arr = [[0]*cols for _ in range(rows)]

2. 嵌套循环创建

和列表推导式原理一致,手动逐行生成独立列表:

rows, cols = (4,5)
arr = []
for _ in range(rows):
    arr.append([0]*cols)

修改元素测试:

arr[0][2] = 3
print(arr)

输出结果正常,只有目标元素被修改:

[[0, 0, 3, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:35:31