我有一個只包含 0 的嵌套串列,由 5 x 5 的大小定義,我希望能夠使用直接索引將嵌套串列中的特定值設定為 1。這是我目前的解決方案:
Grid = [[0] * 5] * 5
ObX = 2
print(ObX)
ObY = 3
print(ObY)
Grid[ObY][ObX] = 1
print(Grid)
預期輸出:
2
3
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [ 0, 0, 0, 0, 0]]
實際輸出:
2
3
[[0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [ 0, 0, 1, 0, 0]]
據我所知,它忽略了“ObY”索引,只是決定要替換索引“ObX”處每個串列中的每個值。我究竟做錯了什么?
uj5u.com熱心網友回復:
您創建的串列串列包含 5 次相同的串列,更改一次會更改其所有副本
In [1]: Grid = [[0] * 5] * 5
In [2]: [id(x) for x in Grid]
Out[2]:
[140392398718848,
140392398718848,
140392398718848,
140392398718848,
140392398718848]
使用它來創建 5 個不同的串列
In [5]: Grid =[[0]*5 for _ in range(5)]
In [6]: [id(x) for x in Grid]
Out[6]:
[140392397938112,
140392396267776,
140392397478656,
140392398276224,
140392398427200]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/314380.html
下一篇:Python:檢查重復項
