def _all_simple_paths_graph(G, source, target, cutoff=None):
if cutoff < 1:
return
visited = [source]
stack = [iter(G[source])]
while stack:
children = stack[-1]
child = next(children, None)
if child is None:
stack.pop()
visited.pop()
elif len(visited) < cutoff:
if child == target:
yield visited + [target]
elif child not in visited:
visited.append(child)
stack.append(iter(G[child]))
else: #len(visited) == cutoff:
if child == target or target in children:
yield visited + [target]
stack.pop()
visited.pop()
我在link上找到了该代码。
但是不理解一些陈述,如下所示
children = stack[-1]
// stack[-1]
是什么意思?
child = next(children, None)
//儿童是一个名单还是儿童名单?
stack = [iter(G[source])]
//那是什么iter
?
如果孩子是无://猜猜孩子是否为空(孩子是一个列表)。
visited = [source]
//这是什么?
yield visited + [target]
//收益率?
任何人都可以向我解释一下吗?我试图用C语言重写它。
答案 0 :(得分:3)
它看起来像一个python代码
<小时/> 1)stack[-1]
表示它将提供最后一个元素。
2)
children
是一个变量,通过此代码保存列表的最后一个元素stack
children = stack[-1]
child
是next()
函数返回的任何内容,但从它的外观来看,它看起来也像一个变量。
next()
函数返回None