提问人:narcel 提问时间:10/25/2023 更新时间:10/25/2023 访问量:45
如何填充二维数组 [duplicate]
how to fill a two dimensional array [duplicate]
问:
我有一个使用特殊算法填充二维数组的代码 当我运行代码时,由于某种原因,在“c[i][b] = d”行上,不仅可迭代元素的值会更改,而且所有其他元素的值也会更改,也就是说,如果我更改了元素 c[0][1] 的值, 然后所有元素中的值都会改变:C[0][1]、C[1][1]、C[2][1] 等 为什么会发生这种情况以及如何解决?
k = 8
colors = 3
main = 1
a = 0
default = 0
d = 0
c = [[0] * k] * n
for i in range(n):
default += 1
if default == colors + 1:
default = 1
a = default
for b in range(k):
d = a
c[i][b] = d
a += 1
if a == colors + 1:
a = 1 ``
答:
1赞
AKX
10/25/2023
#1
c = [[0] * k] * n
创建单个列表的实例列表。n
[0] * k
你会想要的
c = [[0] * k for _ in range(n)]
具有唯一的列表(因为将针对 的每次迭代单独计算)。[0] * k
for _ in range(n)
评论
c = [[0] * k] * n
c = [[0] * k] * n
这将生成对同一内部列表的相同引用。n