【问题标题】:Copy of nested list gets bigger when appending to original附加到原始列表时,嵌套列表的副本会变大
【发布时间】:2021-12-15 10:41:11
【问题描述】:

我在这段代码sn-p中遇到了问题:

temp = matrixInput.copy()
for iy in range(len(temp)):
    for runde in range(1, 5):
        for ix in temp[iy]:
            print("iy:", iy, "ix:", ix, "runde", runde, "len:", len(temp[iy]))
            newnumber = ix + runde
            if newnumber > 9:
                newnumber -= 9
            matrixInput[iy].append(newnumber)

matrixInput 是一个包含一大堆整数的列表(如果需要,可以使用矩阵)。

这个想法是创建一个副本,遍历副本并附加到原始副本。这样做 4 次,每次附加数字中的值应该增加 1。目标是得到一个 5 倍于初始值的矩阵。

到目前为止一切顺利。但是由于某种原因,当我附加到matrixInput 时,最内部的循环会卡住并无休止地附加。尽管我附加到matrixInput[iy]temp[iy] 实际上变得越来越大。我的错误是什么?

【问题讨论】:

  • 我没有附加我正在迭代的列表,但迭代仍然变得更大。
  • list.copy() 是浅拷贝。它不会复制子列表。
  • 天哪。你说的对。它的列表列表,因此它只复制列表。谢谢

标签: python python-3.x list


【解决方案1】:

正如评论中提到的 list.copy() 是浅的,一个解决方案是使用复制库中的 deepcopy 方法

import copy
...
temp=copy.deepcopy(matrixInput)

【讨论】:

    猜你喜欢
    • 2019-03-27
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2020-06-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多