Python 2D数组/列表赋值会产生不想要的结果



假设,我有一个二维列表/数组,其中包含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)].

相关内容

  • 没有找到相关文章