我通过将节点放入列表中创建了一个图。节点是一个具有“父”、“子”和“边”属性的类。我想检查一个符号是否在当前节点的任何子节点的边缘,如果是,则将当前节点更改为该节点。如果没有,则创建一个具有该边的新节点,并将当前节点更改为该边。
我这样做:
match = False
for daughter in currentNode.daughters:
if daughter.edge == currentSymbol:
match = True
currentNode = daughter
if match == False:
trie.append(node(currentNode, [], currentSymbol)
currentNode = trie[-1]
“match”的用法对我来说似乎不雅。是否有更好的语法来检查在女儿之间是否存在边缘,如果是这样,将当前节点更新为那个女儿,如果没有,那么创建那个节点吗?
最佳答案
您可以在这里使用for/else
:
for daughter in currentNode.daughters:
if daughter.edge == currentSymbol:
currentNode = daughter
break
else:
trie.append(node(currentNode, [], currentSymbol)
currentNode = trie[-1]
如果
else
循环正常退出,即没有for
,将执行break
情况。