回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我目前正在研究图形遍历。<code>find_path</code>,路径递增
like<code>path = path + [start]</code>返回<code>[30, 3, 5, 8]</code>,而{<cd4>}带有路径
incremented like<code>path +=[start]</code>返回一个包含<code>find_path2</code>所拥有的所有值的列表
已经遍历,<code>[30, 3, 4, 0, 1, 2, 5, 8]</code>。在</p>
<p>我猜<code>+=</code>的作用类似于append方法,其中<code>path = path + [start]</code>
重新分配吗?在</p>
<p>有人能解释一下<code>path +=[start]</code>之间的区别吗
和<code>path = path + [start]</code></p>
<pre><code>def find_path2(graph, start, end, path=[]):
path += [start]
if start == end:
return path
if not start in graph:
return None
for node in graph[start]:
if node not in path:
newpath = find_path2(graph, node, end, path)
if newpath: return newpath
return None
def find_path(graph, start, end, path=[]):
path = path + [start]
if start == end:
return path
if not start in graph:
return None
for node in graph[start]:
if node not in path:
newpath = find_path(graph, node, end, path)
if newpath: return newpath
return None
graph = {
0: [],
1: [],
2: [],
3: [4,2,5],
4: [0,1],
5:[8],
10:[5,6],
6:[],
30:[3]
}
print find_path(graph,30,8) #[30, 3, 5, 8]
print find_path2(graph,30,8) #[30, 3, 4, 0, 1, 2, 5, 8]
</code></pre>