我的程序的目标是用1和0创建一个棋盘。它应该看起来像这样:
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
这是我的代码:
grid = [[0]*8]*8
for i in range(8):
for j in range(8):
if (i+j)%2 == 1:
grid[i][j] = 1
print grid
但是,当我以这种方式初始化数组时,整个数组中都填充了一个:
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
但是如果我像这样对数组进行初始化:
grid = []
for i in range(8):
grid.append([0]*8)
程序正常运行。我在多个不同的编译器中尝试了原始方法,但结果相同。有人知道为什么会这样吗?