私は、元のバージョンのnetworkxからDFSのカスタマイズ版を作ろうとしています。 networkx DFS私の実装ではジェネレータPythonからのリストを返す
が、私は「もし」のラベルのリストに含まれている子を追加し、すべての後にリストを返すようにしたいが、私がすることはできません:あなたはnetworkxここからDFSの元のバージョンに関係することができますそれ
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
ジェネレータは、アイテムを 'yield'で1つずつ返します。 'return'はありません。 –
extract_expressionは何をしますか? –
@JayParikh:私の仕事のために元の文字列から部分文字列を抽出するだけの機能 – xtiger