【问题标题】:Python - Appending to 2D arrays within a for loop causes previous entries to be overwritten [duplicate]Python - 在for循环中附加到二维数组会导致以前的条目被覆盖[重复]
【发布时间】:2021-02-24 02:52:47
【问题描述】:

我编写了一个函数来创建 16、16 维向量并将它们放入一个数组中,但是当我追加到数组时,我最终会覆盖上一个条目。

import math

empvec=[None]*16
vecset=[]

for g in range(16):
    tempvec=empvec
    for i in range(16):
        f=g%8+1
        if(bool((g)//8)):
            tempvec[i]=i*f
        else:
            tempvec[i]=i/f
    vecset.append(tempvec)

for g in range(16):
    print(vecset[g])

我也尝试过创建一个空的 16 项数组,然后使用 vecset[g]=tempvec 而不是追加,这也不起作用

【问题讨论】:

  • @Nick - 这里的问题是通过赋值制作列表的浅表副本,而不是乘以列表。
  • @TigerhawkT3 你是对的 - 我没有仔细查看代码。谢谢指正。

标签: python arrays for-loop multidimensional-array


【解决方案1】:

您需要为每一行复制列表。您当前的代码中的所有行都指向同一个列表(内存地址)。

需要简单的改变

for g in range(16):
    tempvec=empvec[:]  #  <<< copy list

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    相关资源
    最近更新 更多