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
。怎么做到的?
答案 0 :(得分:0)
您无法在Python中添加类似的列表。您可以像list = list1 + list2
一样追加。因此,您需要编写ans.append(temp)
来代替ans = ans + temp
。
答案 1 :(得分:0)
使用ans.append(temp[:])
代替ans.append(temp)
是可行的。
但是我不知道为什么。