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]
我有一个只包含 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]