下面是我的代碼n = 4m = 4figures = [1,2,2]def almostTetris(n, m, figures): grid = [[0] * m] * n def shape1(count): for i in range(n): for j in range(m): if grid[i][j] == 0: print(grid[i][j]) print(grid[1][0]) print(grid[2][0]) print(grid[3][0]) grid[i][j] = count print(grid[i][j]) print(grid[1][0]) print(grid[2][0]) print(grid[3][0]) return def shape2(count): for i in range(n): for j in range(m - 2): if grid[i][j] == 0 and grid[i][j + 1] == 0 and grid[i][j + 2] == 0: grid[i][j] = grid[i][j + 1] = grid[i][j + 2] = count return for i in range(len(figures)): if figures[i] == 1: shape1(i + 1) elif figures[i] == 2: shape2(i + 1) return gridprint(almostTetris(n, m, figures))這是我打印出來的:00001111[[1, 2, 2, 2], [1, 2, 2, 2], [1, 2, 2, 2], [1, 2, 2, 2]]我的問題是如何grid[i][j] = count將第一列中的所有數(shù)字轉(zhuǎn)換為 1(計數(shù)值)?我以為因為i和j都是0,所以只有第一個元素會變成1。
1 回答

HUX布斯
TA貢獻1876條經(jīng)驗 獲得超6個贊
當(dāng)我第一次學(xué)習(xí)Python時,我也遇到過這個問題。問題出在這一行
grid=[[0]*m]*n
因為它不會創(chuàng)建一個由 0 組成的 nxm 網(wǎng)格,所以它實際上復(fù)制了對象:[[0]*m]
n 次以創(chuàng)建二維數(shù)組。因此,如果您更改此對象中的其中一個值,其他 n 個對象實例也會被編輯。嘗試一些類似的事情
grid = [[0]*m for _ in range(n)]
添加回答
舉報
0/150
提交
取消