假设,我有一个二维列表/数组,其中包含50个子数组,看起来像[0, 0]
。我只想改变数组的某些部分,比如将每个子数组的第一个元素从索引15改为29。我用了一个for循环来做这件事。
array = [[0,0]] * 50
for i in range(15, 30):
array[i][0] = 1
但是当Iprint(array)
时,程序似乎改变了每个子数组的所有第一个元素。输出:
[[1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0]]
我不知道我做错了什么,因为逻辑似乎是合理的。有人能指出我的错误吗?array = [[0,0]] * 50
这样,您的数组将有[0,0]
50次引用相同的[0,0]。所以修改一个会修改所有的。
试试这样:array = [[0, 0] for _ in range(50)]
.