【问题标题】:Python 2D Array/List Assignment Gives Unwanted ResultPython 2D 数组/列表分配给出了不需要的结果
【发布时间】:2021-11-29 05:03:25
【问题描述】:

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

我不知道我做错了什么,因为逻辑似乎是合理的。谁能指出我的错误?

【问题讨论】:

    标签: python arrays multidimensional-array syntax variable-assignment


    【解决方案1】:

    array = [[0,0]] * 50 这样,您的数组将有 [0,0] 50 次引用相同的 [0,0]。所以修改一个会修改所有的。
    试试这个:array = [[0, 0] for _ in range(50)]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 2018-03-07
      • 2019-01-06
      • 2016-01-20
      • 2017-05-16
      相关资源
      最近更新 更多