通过索引更改数组元素

问题描述 投票:0回答:1

我有一个列表/数组,其中的元素需要不时更改。我通过索引更改了列表中的元素,当我打印出列表时,更改已经完成。

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 的板,就好像我没有更改列表的内容一样。

我不明白我目前的问题是什么。

python arrays list function indexing
1个回答
0
投票

您可以发布您使用的完整代码吗?我已经用我认为是您正在使用的 stdarray.create2D 函数对其进行了测试 - 您忘记包含它!

(我怀疑问题是由于您使用了变量“piece”而不是对新数组或其他数据结构的引用而引起的。这表明您要么在错误的时间覆盖了它,要么您的代码只是没有做你认为的那样。)

© www.soinside.com 2019 - 2024. All rights reserved.