簡體   English   中英

如何將列表列表和 append 中的列表復制到 python 中的新列表?

[英]How do I copy a list of lists and append it to a new list in python?

我正在處理一個 function,它是在 python 中創建一個包含子列表的列表的副本。它應該然后 append 將副本復制到一個名為 new_puzzles 的空列表。 但是當我撥打 function 時,我得到了很大的回報。 以下是我的原始列表、當前代碼和 output 任何幫助表示贊賞!

原清單

[[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

Output [[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]]]

如果您將列表列表傳遞給 function,則無需復制它。 如果你想 append 給定的列表列表到一個空列表,解決方案就是:

def copy_puzzle(puzzle):
    return [puzzle]

但是我不確定這是否是所需的功能。 正如 Mureinik 所說,預期的 output 會有所幫助。

我可能是錯的,但我認為可能是這種情況:您正在使用 for 循環遍歷列表的長度,無論它有多長。 這可能會導致 output 太長,因為您將此列表附加到新列表 x 次。 解決方案可能是只刪除 for 循環並將列表 append 添加到新列表一次。

解決方案:

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

    return new_puzzles

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM