无法将值存储在全局变量中

问题描述

我正在尝试使用回溯算法在 leetcode 中解决置换问题,在打印时我得到了所有的可能性,但是当我尝试将这些值存储在全局变量中时,我不允许这样做

go.mod

当我为 outPut 存储全局变量中的值时,我得到了这样的

Ex:
AnswerIwant:[[1,2,3],[1,3,2],[2,1,1],[3,1]]

when i print those value while recursion it is print 
Example:
[1,3]
[1,2]
[2,1]
[2,3]
[3,2]
[3,1]

这是我上面输出代码

[1,3]
[[1,3]]
[[1,2]]
[1,2]
[[1,2]]
[[1,3]]
[[1],[1]]
[2,1]
[[2,1]]
[[2,3]]
[2,3]
[[2,3]]
[[2,1]]
[[2],[2],[2]]
[3,2]
[[3,2]]
[[3,1]]
[3,1]
[[3,1]]
[[3,2]]
[[3],[3],[3]]

[[],[],[]]

用符号词解释我面临的问题 谢谢

解决方法

您必须在添加到 answerIwant 列表时附加列表的副本。因此,您应该将 answerIwant.append(bucket) 替换为 answerIwant.append(bucket.copy())

有关详细信息,请参阅 this。所以你的代码可能是这样的,

nums = [1,2,3]
val=nums
answerIwant = []
numberOfValues=len(val)-1
answer=[]
def permutation(nums,bucket,index,sub):
    global numberOfValues
    for i in range(len(nums)):
        val=nums.pop(0)
        bucket.append(val)
        if len(bucket)-1==numberOfValues:
            # print(bucket)
            answerIwant.append(bucket.copy())
        permutation(nums,sub)
        nev = bucket
        nev=bucket.pop()
        nums.append(nev)

#[[1,3],[1,3,2],[2,1,1],[3,1]]
sub=[]
bucket = []

permutation(nums,sub)

print(answerIwant)