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

Python嵌套列表赋值异常求助:写入值时子列表同步变更

嵌套列表网格的批量修改问题解决

你的代码核心问题是创建嵌套列表时重复引用了同一个子列表对象,导致修改单个位置时所有行同步变化。

问题根源

看这段初始化代码:

Yardhelper = []
for n in range(0,N):
    Yardhelper.append("")
for n in range(0,N):
    Yard.append(Yardhelper)

这里Yardhelper只被创建了一次,随后被重复添加到Yard中。Yard里的每一个元素都是同一个列表的引用,而非独立的新列表。所以当你修改Yard[x][y]时,实际上是修改了那个唯一的Yardhelper,所有行自然会同步显示这个修改。

修复方案

有两种简单的修复方式,核心都是确保每一行都是独立的列表:

方法1:使用列表推导式(推荐)

N = int(input())
# 直接生成N个独立的子列表,每个子列表初始化为N个0
Yard = [[0 for _ in range(N)] for _ in range(N)]

tree_count = int(input())
for _ in range(tree_count):
    x, y = map(int, input().split())
    Yard[x][y] = 1
print(Yard)

方法2:循环内创建新的子列表

N = int(input())
Yard = []

for _ in range(N):
    # 每次循环都新建一个子列表,避免复用同一对象
    Yardhelper = [0] * N
    Yard.append(Yardhelper)

tree_count = int(input())
for _ in range(tree_count):
    x, y = map(int, input().split())
    Yard[x][y] = 1
print(Yard)

测试验证

输入:

3
1
0 1

输出将符合预期:

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:25:33