我通过将节点放入列表中来创建图表。 Node 是一个具有属性“parent”、“daughters”和“edge”的类。我想检查一个符号是否在当前节点的任何子节点的边缘,如果是,则将当前节点更改为该节点。如果不是,则我使用该边创建一个新节点,并将当前节点更改为它。
我是这样做的:
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]
“匹配”的使用对我来说似乎不够优雅。是否有更好的语法来检查女儿之间是否存在边缘,如果存在,则将当前节点更新为该女儿,如果不存在,则创建该节点?
最佳答案
您可以使用 for/else
这里:
for daughter in currentNode.daughters:
if daughter.edge == currentSymbol:
currentNode = daughter
break
else:
trie.append(node(currentNode, [], currentSymbol)
currentNode = trie[-1]
如果 for
循环正常退出,即没有 break
else
将被执行
关于python - 这段代码有Python函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31479915/