我想为for循环中的2d数组赋值
这是我的代码
num = 0
n = 3
arr = [[0] * n] * n
for i in range(n):
for j in range(n):
arr[i][j] = num
num +=1
我期望的输出是
[0, 1, 2]
[3, 4, 5]
[6, 7, 8]
但是实际输出是
[6, 7, 8]
[6, 7, 8]
[6, 7, 8]
有什么办法可以解决这个问题?
答案 0 :(得分:2)
arr = [[0] * n] * n
它将创建n个列表副本。因此,当您在一个列表中进行更改时,所有其他列表也将更改。您可以将其更改为以下内容:
arr = [[0 for j in n] for i in n]