【问题标题】:Indexing 2 dimensional array in python在python中索引二维数组
【发布时间】:2019-12-02 21:52:41
【问题描述】:

我一直在尝试使用 x[2][3]=1 语法在 python 中更改二维数组中的单个项目,但不仅仅是更改第二行第三列中的项目,它最终会更改所有的值第 3 列。我的代码如下:

population = [[0]*20]*5

population[2][3] = 1

for row in population:
    print(row)

这个输出

[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

但我只想

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

如何索引项目以使其仅更改第 2 行和第 3 列?

我在 repl.it 上使用 python 3.7.4

链接:https://repl.it/@ajqe/2d-array-test

【问题讨论】:

标签: python multidimensional-array


【解决方案1】:

使用:

population = [[0]*20 for _ in range(5)]

改为生成列表。您使用的方法是引用同一个对象 5 次,而不是创建 5 个单独的列表。要检查这一点,您可以使用 is 运算符:

>>> population = [[0]*20]*5
>>> population[0] is population[1]
True

>>> population = [[0]*20 for _ in range(5)]
>>> population[0] is population[1]
False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 2023-03-07
    • 2014-06-12
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 2011-07-07
    相关资源
    最近更新 更多