如何附加到全局列表?

时间:2018-06-25 15:21:17

标签: python python-2.x

candidates = [2,3,5]
candidates.sort()
target = 8
ans = []
temp = []
start = 0

def backtracking(temp,candidates,remaining,start):
    global ans
    if remaining < 0:
        return
    elif remaining == 0:
        if temp not in ans:
            ans.append(temp)
        print ans,"ans"
    else:
        i = start
        print i,"st"
        while i < len(candidates):
            temp.append(candidates[i])
            print i,"i"
            backtracking(temp,candidates,remaining-candidates[i],i)
            temp.pop(len(temp) - 1)
            i += 1


backtracking(temp,candidates,target,start)
print ans

因此,当我尝试打印列表ans时,会得到[[]]-无法将temp列表附加到全局列表ans。怎么做到的?

2 个答案:

答案 0 :(得分:0)

您无法在Python中添加类似的列表。您可以像list = list1 + list2一样追加。因此,您需要编写ans.append(temp)来代替ans = ans + temp

答案 1 :(得分:0)

使用ans.append(temp[:])代替ans.append(temp)是可行的。
但是我不知道为什么。