我有一个列表/数组,其中的元素需要不时更改。我通过索引更改了列表中的元素,当我打印出列表时,更改已经完成。
l = stdarray.create2D(width,height,"c")
l[0][5] = "d"
l[3][4] = "A"
l[2][6] = "D"
我打印出来的输出是这样的:
[['c', 'c', 'c', 'c', 'c', 'd', 'c'], ['c', 'c', 'c', 'c', ' c', 'c', 'c'], ['c', 'c', 'c', 'c', 'c', 'c', 'D'], ['c', 'c' , 'c', 'c', 'A', 'c', 'c'], ['c', 'c', 'c', 'c', 'c', 'c', 'c' ], ['c', 'c', 'c', 'c', 'c', 'c', 'c'], ['c', 'c', 'c', 'c', ' c', 'c', 'c'], ['c', 'c', 'c', 'c', 'c', 'c', 'c'], ['c', 'c' , 'c', 'c', 'c', 'c', 'c'], ['c', 'c', 'c', 'c', 'c', 'c', 'c' ]]
这正是我所期望的。
但是,当我在其他地方(在另一个函数中)使用该列表时,将使用原始列表(仅包含 c),就好像我没有进行任何更改一样,这是代码片段
for a in range(len(l)):
for b in range(len(l[a])):
piece = l[a][b]
我得到了一个带有 c 的板,就好像我没有更改列表的内容一样。
我不明白我目前的问题是什么。
您可以发布您使用的完整代码吗?我已经用我认为是您正在使用的 stdarray.create2D 函数对其进行了测试 - 您忘记包含它!
(我怀疑问题是由于您使用了变量“piece”而不是对新数组或其他数据结构的引用而引起的。这表明您要么在错误的时间覆盖了它,要么您的代码只是没有做你认为的那样。)