[英]Return list from generator Python
我正在嘗試從networkx的原始版本制作DFS的自定義版本。 您可以在此處從networkx 關聯DFS的原始版本: networkx DFS
在我的實現中,我想將標簽中包含“ if”的子項添加到列表中,並畢竟返回列表,但我無法做到
def extract_expression(label):
m = re.search('if(.+?)goto', label)
if m:
return m.group(1)
return None
def dfs_edges(G, source=None):
path = list()
if source is None:
nodes = G
else:
nodes = [source]
visited=set()
for start in nodes:
if start in visited:
continue
visited.add(start)
stack = [(start,iter(G[start]))]
while stack:
parent,children = stack[-1]
try:
child = next(children)
label = G.node[child]['label']
if "if" in label:
print child
# print extract_expression(label)
exp = extract_expression(label)
path.append(exp)
if child not in visited:
yield parent,child
visited.add(child)
stack.append((child,iter(G[child])))
except StopIteration:
stack.pop()
return path
拋出錯誤
return path
SyntaxError: 'return' with argument inside generator
生成器函數必須始終產生其結果。
您可以簡單地將return path
替換為yield path
但這將是一種不好的做法,並且總體上是不一致的。 您將返回parent, child
並突然獲得一份清單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.