2017-02-13 26 views
0

Он печатает правильные значения, но ничего не сохраняет в массиве результатов. Вот мой код:Невозможно скопировать локальную переменную в массив Array

def backtrack(result, nums, tempList): 
    if len(tempList) == len(nums): 
     result.append(tempList) 
    else: 
     for i in range(0, len(nums)): 
      if not tempList.count(nums[i]): 
       tempList.append(nums[i]) 
       backtrack(result, nums, tempList) 
       tempList.pop() 

nums = [1, 2, 3] 
result = [] 
backtrack(result, nums, []) 
print result 
+1

Try 'result.append (TempList [:])'. – jonrsharpe

+0

Спасибо @jonrsharpe – Uday

ответ

0

Причина, почему вы получили пустой внутренний список является то, что вы изменяете исходный TempList с tempList.pop()

Что вы можете сделать, это сделать копии tempList перед добавить его в result :

import copy 

изменение

result.append(tempList) 

к

mycopy = copy.deepcopy(tempList) 
result.append(mycopy)