亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調用時重復函數

調用時重復函數

斯蒂芬大帝 2023-10-31 15:45:52
下面是我的代碼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將第一列中的所有數字轉換為 1(計數值)?我以為因為i和j都是0,所以只有第一個元素會變成1。
查看完整描述

1 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

當我第一次學習Python時,我也遇到過這個問題。問題出在這一行

grid=[[0]*m]*n

因為它不會創建一個由 0 組成的 nxm 網格,所以它實際上復制了對象:[[0]*m]n 次以創建二維數組。因此,如果您更改此對象中的其中一個值,其他 n 個對象實例也會被編輯。嘗試一些類似的事情

grid = [[0]*m for _ in range(n)]


查看完整回答
反對 回復 2023-10-31
  • 1 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號