在递归函数中附加列表

时间:2016-06-14 16:08:48

标签: python list recursion append

尝试在python中刷新我的DSA知识,所以我正在编写Graph类。在实现find_all_paths方法时,遇到了一些我不太了解的东西。我将首先发布代码:

def find_all_paths(graph, start, end, path=[]):
    path = path + [start]
    if start == end:
        return [path]
    if not graph.has_key(start):
        return []
    paths = []
    for node in graph[start]:
        if node not in path:
            newpaths = find_all_paths(graph, node, end, path)
            for newpath in newpaths:
                paths.append(newpath)
    return paths

     graph = {'A': ['B', 'C'],
         'B': ['C', 'D'],
         'C': ['D'],
         'D': ['C'],
         'E': ['F'],
         'F': ['C']}

          print(find_all_paths(graph, 'A', 'D'))

方法的第一行将起始节点添加到路径列表中。我最初把它写成路径+ = [开始]而不是路径=路径+ [开始]。第一个返回所需的输出,而第二个没有。换一种说法: - 当使用路径+ = [开始]时,我得到[[' A',' B',' C',' D']]作为输出。 - 当使用path = path + [start]时,我得到[[' A',' B',' C',' D'] ,[' A',' B',' D'],[' A',' C',& #39; D']]作为一个ouptut。 任何有关为什么会被非常感谢的见解。 提前谢谢。

0 个答案:

没有答案