附加到二维数组的特定元素

时间:2021-01-31 15:27:56

标签: arrays python-3.x list

我有这个列表 arr 包含 n 个空列表和另一个列表 indices,整数范围从 0 到 n-1

    n = 4
    e = []
    arr = [e]*(n)
    indices = [0,2,3,0,2,1,3]

我想要做的是获取 i 中的每个元素 indices 并将一些变量附加到 arr 的第 i 个元素。代码如下

    var = 1
    for i in indices:
        arr[i].append(var)

我期待 arr 的第一个列表中有两个元素,第二个列表中有一个元素,等等。但是,当我打印 arr 时,我得到以下内容

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

1 个答案:

答案 0 :(得分:1)

尝试按如下方式更改第一个块:

n = 4
arr = [[] for i in range(n)]
indices = [0,2,3,0,2,1,3]

现在一切正常。

更多信息

当您将 arr 定义为 arr = [e]*(n) 时,arr 中的每个列表都指向内存中的同一个位置(即 e)。因此,更改 arr 中的一个元素将更改所有元素。但是当您将 arr 定义为 arr = [[] for i in range(n)] 时,该元素将是独立的。

相关问题