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

Python:常量创建嵌套列表后for循环填充值异常的解决方法

问题根源与解决方案

问题原因

你遇到的核心问题是嵌套列表初始化方式错误:[[0]*COLS]*ROWS这种写法并没有创建ROWS个独立的长度为COLS的子列表,而是创建了1个长度为COLS的列表,然后让ROWS个引用都指向这个列表。哪怕使用copy.deepcopy,虽然能生成独立的子副本,但这属于事后补救,远不如直接初始化正确的结构高效可靠。

当你在循环中修改child[r][c]时,实际上是在修改同一个底层列表,最终所有行都会被最后一次赋值覆盖。

修正代码

直接使用列表推导式创建嵌套列表,确保每个子列表都是独立对象,无需依赖copy模块:

ROWS = 5
COLS = 3
# 列表推导式创建独立子列表的嵌套结构
child = [[0] * COLS for _ in range(ROWS)]

for r in range(ROWS):
    for c in range(COLS):
        print('Enter a whole number.')
        child[r][c] = int(input('Your number: '))

为什么列表推导式有效

[[0] * COLS for _ in range(ROWS)]会循环ROWS次,每次都创建一个新的[0] * COLS列表,因此每个子列表都是完全独立的。修改任意一行的元素都不会影响其他行,完美适配大量子列表的场景(比如25个含10个元素的子列表,只需写成[[0]*10 for _ in range(25)])。

验证结果

按照你的输入逻辑(每行输入相同数值),最终会得到期望的结果:

[[1,1,1], [2,2,2], [3,3,3], [4,4,4], [5,5,5]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:05:57