如何复制列表列表并将其附加到 python 中的新列表?
How do I copy a list of lists and append it to a new list in python?
我正在开发一个函数,它会在 python 中创建一个包含子列表的列表副本。然后应该将副本附加到名为 new_puzzles 的空列表中。但是当我调用该函数时,我得到了很大的 return。以下是我的原始列表、当前代码和输出任何帮助表示赞赏!
原名单
[[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]]]
如果您将列表的列表传递给函数,则无需复制它。如果你想将给定的列表列表附加到一个空列表中,解决方案就是:
def copy_puzzle(puzzle):
return [puzzle]
但是我不确定这是否是所需的功能。正如 Mureinik 所说,预期的输出会有所帮助。
我可能错了,但我认为可能是这种情况:您正在使用 for 循环遍历列表的长度,无论它有多长。这可能会导致输出太长,因为您将此列表附加到新列表 x 次。解决方案可能是只删除 for 循环并将列表附加到新列表一次。
解决方案:
def copy_puzzle(puzzle):
new_puzzles = puzzle.copy()
return new_puzzles
我正在开发一个函数,它会在 python 中创建一个包含子列表的列表副本。然后应该将副本附加到名为 new_puzzles 的空列表中。但是当我调用该函数时,我得到了很大的 return。以下是我的原始列表、当前代码和输出任何帮助表示赞赏!
原名单
[[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]]]
如果您将列表的列表传递给函数,则无需复制它。如果你想将给定的列表列表附加到一个空列表中,解决方案就是:
def copy_puzzle(puzzle):
return [puzzle]
但是我不确定这是否是所需的功能。正如 Mureinik 所说,预期的输出会有所帮助。
我可能错了,但我认为可能是这种情况:您正在使用 for 循环遍历列表的长度,无论它有多长。这可能会导致输出太长,因为您将此列表附加到新列表 x 次。解决方案可能是只删除 for 循环并将列表附加到新列表一次。
解决方案:
def copy_puzzle(puzzle):
new_puzzles = puzzle.copy()
return new_puzzles