Skip to main content
 首页 » 编程设计

python之在递归函数中附加一个带有列表的空列表

2025年05月04日13bluestorm

def permute(nums): 
    result = [] 
    get_permute([], nums, result) 
    return result 
 
def get_permute(current, num, result): 
 
    if not num: 
        result.append(current+[]) 
 
    for i, v in enumerate(num): 
        current.append(num[i]) 
        get_permute(current, num[:i] + num[i + 1:], result) 
        current.pop() 
 
if __name__ == "__main__": 
 
    r = permute([1,2,3]) 
 
    for perm in r: 
        print(perm) 

current + [] 在 result.append(current+[]) 中做了什么,如果我删除 +[] 它打印空白列表.

请您参考如下方法:

它正在复制列表。当您删除它时,您会遇到 List of lists changes reflected across sublists unexpectedly问题,因为外部列表包含对同一列表的许多引用,而不是对许多不同列表的引用。

您应该能够将其替换为 current.copy()(使用 Python >= 3.3)或 list(current) 以避免 future 读者出现类似的混淆。 (有 a lot of ways to copy a list 。选择你喜欢的并坚持下去。)