簡體   English   中英

Python:嵌套列表沒有正確替換值

[英]Python: Nested List is not replacing values correctly

我有一個只包含 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”處每個列表中的每個值。 我究竟做錯了什么?

您創建的列表列表包含 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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM