2016-01-27 85 views
0
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上找到該代碼。棧[-1]在僞代碼中意味着什麼?

但不明白某些語句,如下

  • children = stack[-1] //是什麼stack[-1]意思?

  • child = next(children, None) //是孩子列表還是孩子列表?

  • stack = [iter(G[source])] //什麼是iter

  • 如果孩子是None://猜測孩子是否爲空(孩子是一個列表)。

  • visited = [source] //這是什麼?

  • yield visited + [target] //收益?

任何人都可以向我解釋嗎?我想重寫它在C.

回答

3

它看起來像一個Python代碼


1) stack[-1]意味着它會給最後一個元素。
2) children是一個變量,它通過這段代碼保存列表 stack

children = stack[-1] 

child是什麼next()函數返回的最後一個元素,但它的外觀,它也像一個變量。


4) 如果孩子是無: 如果 next()函數返回 None

+0

你能解釋一下最後兩個行? – arslan

+0

@alim,我認爲它是模塊本身定義的東西之一。它不是語言的一部分。 – Haris

+0

非常感謝,我沒有意識到它是python。 – arslan

相關問題