【问题标题】:How do I copy a list of lists and append it to a new list in python?如何复制列表列表并将其附加到 python 中的新列表?
【发布时间】:2020-12-06 21:02:49
【问题描述】:

我正在开发一个函数,该函数是在 python 中创建带有子列表的列表副本。然后应该将副本附加到一个名为 new_puzzles 的空列表中。但是当我调用这个函数时,我得到了很大的回报。以下是我的原始列表、当前代码和输出,感谢您的帮助!

原始列表

[[5, 0, 0, 0, 0, 0, 0, 0, 0], [0, 9, 0, 7, 0, 0, 8, 0, 0], [0, 0, 0 , 0, 3, 0, 0, 7, 0], [6, 0, 1, 0, 0, 0, 9, 8, 0], [0, 0, 0, 6, 0, 0, 0, 0 , 0], [0, 0, 9, 0, 0, 0, 7, 0, 1], [0, 0, 0, 0, 0, 8, 1, 9, 0], [0, 4, 0 , 5, 0, 1, 0, 0, 8], [0, 7, 0, 3, 0, 6, 0, 4, 0]]

代码

def copy_puzzle(puzzle):

new_puzzles = []
new_puzzles = puzzle.copy()

for i in range(len(puzzle)):
    new_puzzles.append(puzzle)

return new_puzzles

输出 [[5, 0, 0, 0, 0, 0, 0, 0, 0], [0, 9, 0, 7, 0, 0, 8, 0, 0], [0, 0, 0, 0, 3, 0, 0, 7, 0], [6, 0, 1, 0, 0, 0, 9, 8, 0], [0, 0, 0, 6, 0, 0, 0, 0, 0] , [0, 0, 9, 0, 0, 0, 7, 0, 1], [0, 0, 0, 0, 0, 8, 1, 9, 0], [0, 4, 0, 5, 0, 1, 0, 0, 8], [0, 7, 0, 3, 0, 6, 0, 4, 0], [[5, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 9, 0, 7, 0, 0, 8, 0, 0], [0, 0, 0, 0, 3, 0, 0, 7, 0], [6, 0, 1, 0 , 0, 0, 9, 8, 0], [0, 0, 0, 6, 0, 0, 0, 0, 0], [0, 0, 9, 0, 0, 0, 7, 0, 1 ], [0, 0, 0, 0, 0, 8, 1, 9, 0], [0, 4, 0, 5, 0, 1, 0, 0, 8], [0, 7, 0, 3 , 0, 6, 0, 4, 0]], [[5, 0, 0, 0, 0, 0, 0, 0, 0], [0, 9, 0, 7, 0, 0, 8, 0 , 0], [0, 0, 0, 0, 3, 0, 0, 7, 0], [6, 0, 1, 0, 0, 0, 9, 8, 0], [0, 0, 0 , 6, 0, 0, 0, 0, 0], [0, 0, 9, 0, 0, 0, 7, 0, 1], [0, 0, 0, 0, 0, 8, 1, 9 , 0], [0, 4, 0, 5, 0, 1, 0, 0, 8], [0, 7, 0, 3, 0, 6, 0, 4, 0]], [[5, 0 , 0, 0, 0, 0, 0, 0, 0], [0, 9, 0, 7, 0, 0, 8, 0, 0], [0, 0, 0, 0, 3, 0, 0 , 7, 0], [6, 0, 1, 0, 0, 0, 9, 8, 0], [0, 0, 0, 6, 0, 0, 0, 0, 0], [0, 0 , 9, 0, 0, 0, 7, 0, 1], [0, 0, 0, 0, 0, 8, 1, 9, 0], [0, 4, 0 , 5, 0, 1, 0, 0, 8], [0, 7, 0, 3, 0, 6, 0, 4, 0]], [[5, 0, 0, 0, 0, 0, 0 , 0, 0], [0, 9, 0, 7, 0, 0, 8, 0, 0], [0, 0, 0, 0, 3, 0, 0, 7, 0], [6, 0 , 1, 0, 0, 0, 9, 8, 0], [0, 0, 0, 6, 0, 0, 0, 0, 0], [0, 0, 9, 0, 0, 0, 7 , 0, 1], [0, 0, 0, 0, 0, 8, 1, 9, 0], [0, 4, 0, 5, 0, 1, 0, 0, 8], [0, 7 , 0, 3, 0, 6, 0, 4, 0]], [[5, 0, 0, 0, 0, 0, 0, 0, 0], [0, 9, 0, 7, 0, 0 , 8, 0, 0], [0, 0, 0, 0, 3, 0, 0, 7, 0], [6, 0, 1, 0, 0, 0, 9, 8, 0], [0 , 0, 0, 6, 0, 0, 0, 0, 0], [0, 0, 9, 0, 0, 0, 7, 0, 1], [0, 0, 0, 0, 0, 8 , 1, 9, 0], [0, 4, 0, 5, 0, 1, 0, 0, 8], [0, 7, 0, 3, 0, 6, 0, 4, 0]], [ [5, 0, 0, 0, 0, 0, 0, 0, 0], [0, 9, 0, 7, 0, 0, 8, 0, 0], [0, 0, 0, 0, 3 , 0, 0, 7, 0], [6, 0, 1, 0, 0, 0, 9, 8, 0], [0, 0, 0, 6, 0, 0, 0, 0, 0], [0, 0, 9, 0, 0, 0, 7, 0, 1], [0, 0, 0, 0, 0, 8, 1, 9, 0], [0, 4, 0, 5, 0 , 1, 0, 0, 8], [0, 7, 0, 3, 0, 6, 0, 4, 0]], [[5, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 9, 0, 7, 0, 0, 8, 0, 0], [0, 0, 0, 0, 3, 0, 0, 7, 0], [6, 0, 1, 0 , 0, 0, 9, 8, 0], [0, 0, 0, 6, 0, 0, 0, 0, 0], [0, 0, 9, 0, 0 , 0, 7, 0, 1], [0, 0, 0, 0, 0, 8, 1, 9, 0], [0, 4, 0, 5, 0, 1, 0, 0, 8], [0, 7, 0, 3, 0, 6, 0, 4, 0]], [[5, 0, 0, 0, 0, 0, 0, 0, 0], [0, 9, 0, 7 , 0, 0, 8, 0, 0], [0, 0, 0, 0, 3, 0, 0, 7, 0], [6, 0, 1, 0, 0, 0, 9, 8, 0 ], [0, 0, 0, 6, 0, 0, 0, 0, 0], [0, 0, 9, 0, 0, 0, 7, 0, 1], [0, 0, 0, 0 , 0, 8, 1, 9, 0], [0, 4, 0, 5, 0, 1, 0, 0, 8], [0, 7, 0, 3, 0, 6, 0, 4, 0 ]], [[5, 0, 0, 0, 0, 0, 0, 0, 0], [0, 9, 0, 7, 0, 0, 8, 0, 0], [0, 0, 0 , 0, 3, 0, 0, 7, 0], [6, 0, 1, 0, 0, 0, 9, 8, 0], [0, 0, 0, 6, 0, 0, 0, 0 , 0], [0, 0, 9, 0, 0, 0, 7, 0, 1], [0, 0, 0, 0, 0, 8, 1, 9, 0], [0, 4, 0 , 5, 0, 1, 0, 0, 8], [0, 7, 0, 3, 0, 6, 0, 4, 0]]]

【问题讨论】:

  • 预期输出是什么?
  • 该函数应该返回new_puzzles列表
  • 这很清楚,该函数确实做到了。你认为new_puzzles 有什么价值?
  • 输出可能只是原件的副本?
  • 对不起,我不确定我是否理解您的问题。我是一个整体的python新手。我所知道的是,这是为数独返回原始拼图的副本。它特别需要一个谜题列表的深层副本。

标签: python list copy append


【解决方案1】:

我可能是错的,但我认为可能是这种情况:您正在使用 for 循环来遍历列表的长度,不管它有多长。这可能会导致输出太长,因为您将此列表附加到新的 x 次。解决方案可能是只删除 for 循环并将列表追加到新列表一次。

解决方案:

def copy_puzzle(puzzle):
    new_puzzles = puzzle.copy()

    return new_puzzles

【讨论】:

    【解决方案2】:

    如果您将列表列表传递给函数,则无需复制它。如果您想将给定的列表列表附加到一个空列表中,那么解决方案就是:

    def copy_puzzle(puzzle):
        return [puzzle]
    

    但是我不确定这是否是所需的功能。正如 Mureinik 所说,预期的输出会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 2011-12-09
      • 2013-09-25
      • 2023-01-10
      相关资源
      最近更新 更多