Python - 列出以某种方式覆盖的元素

时间:2015-11-01 00:44:16

标签: python list recursion append

我有一个递归函数,试图找到添加到特定数字的数字组合。我将结果存储在名为validCombinations

的列表中

代码:

sum = 4
digits = 2
currentDigit = digits
validCombinations = [] 

#recursion function to find combinations of numbers that add to the sum variable
def recursive(index):
    if 10 not in digitList:        
        if index >= 0:
            total = 0
            for n in digitList:
                total += n
            if total == sum:
                validCombinations.append(digitList)
            digitList[index] += 1
            recursive(index-1)
        else:
            recursive(currentDigit-1)

digitList = []

for n in range(digits,0,-1):
    for i in range(n):
        digitList.append(0)
    recursive(n-1)
    digitList = []
    currentDigit -= 1

print validCombinations

运行时输出

[[9, 10], [10, 0]]

当我希望看到这个

[[2, 2], [4]]

我已经介入了代码,似乎它以某种方式覆盖了列表中的元素,但是在我的代码中,我只使用validCombinations方法与append()进行交互,这应该只是把它添加到最后。

我是否遗漏了某些内容,或者是导致这种情况的递归?

1 个答案:

答案 0 :(得分:1)

使用清单:

        if total == sum:
            validCombinations.append(list(digitList))

您必须获得digitList的副本,而不是digitList。