Python 二维 Array/List 赋值给出不需要的结果

Python 2D Array/List Assignment Gives Unwanted Result

比如说,我有一个二维 list/array,其中包含 50 个看起来像 [0, 0] 的子数组。我只想更改数组的某些部分,比如每个子数组的第一个元素从索引 15 到 29。我使用 for 循环来执行此操作。

array = [[0,0]] * 50
for i in range(15, 30):
    array[i][0] = 1

但是当我print(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)].