answers = []
def search(visit_order, nodes_to_visit, distance):
if len(nodes_to_visit) == 0:
print visit_order
answers.append(visit_order)
return
else:
for node in nodes_to_visit:
nodes_to_visit.remove(node)
visit_order.append(node)
search(visit_order, nodes_to_visit, 0)
visit_order.remove(node)
nodes_to_visit.append(node)
search([],nodes, 0)
print answers
我有一个全局列表answers
和递归函数,通过给定的nodes_to_visit
不胜枚举时,有没有更多的nodes_to_visit
这将增加visit_order
到answers
列表。全球列表附加任何
当我在打印之前打印Visit_order
时,我得到一个正确的值。但是,当我打印answers
时,我只能得到列表,如[[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]
。问题是什么?例如,如果我给搜索([],[1,2,3,4],0)作为输入,它应该给我类似于 [[3,1,2,4])的东西, [3,1,2,4],[3,1,2,4],[3,1,2,4],[3,1,2,4],[3,1,2,4], [3,1,2,4],[3,1,2,4],[3,1,2,4],[3,1,2,4],[3,1,2,4], [3,1,2,4],[3,1,2,4],[3,1,2,4],[3,1,2,4],[3,1,2,4], [3,1,2,4],[3,1,2,4],[3,1,2,4],[3,1,2,4],[3,1,2,4], [3,1,2,4],[3,1,2,4],[3,1,2,4]] ,但它给了我[[],[],[],[],[] ,[],[],[],[],[],[],[],[],[],[],[],[] ],[],[]]。
送东西([1,2,3],nodes,0) – Benjamin
使用'search([1,2,3,4],[],0])' – mplf
当循环内部搜索调用之后立即将它们从那里移除时,不能指望节点留在'visit_order'中。 – Sevanteri