用Python初始化2d数组的不同方法

时间:2019-02-05 20:17:45

标签: python arrays

我的程序的目标是用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)

程序正常运行。我在多个不同的编译器中尝试了原始方法,但结果相同。有人知道为什么会这样吗?

0 个答案:

没有答案