更改内部嵌套列表将更改整个列表

时间:2018-12-05 13:49:17

标签: python python-3.x

我有以下似乎无法正常工作的代码:

from pprint import pprint

sizex = 5
sizey = 5
grid = [[0]*8]*8
cordx = 2
cordy = 3
num = 10

for x in range(sizex):
    for y in range(sizey):
        if grid[cordx+x][cordy+y] != 0:
            grid[cordx+x][cordy+y] = 'x'
        else:
            grid[cordx+x][cordy+y] = num

pprint(grid)

不是绘制10的平方,而是稍后从网格[2] [3]开始到网格[7] [8]结束的'x',而是开始在grid [0] [3]进行绘制通往grid [8] [8]的方式,为什么呢?我在代码中找不到错误。

所需的输出:

 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

实际输出:

[[0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0],
 [0, 0, 0, 'x', 'x', 'x', 'x', 'x', 0, 0]]

0 个答案:

没有答案