这段代码有Python函数吗?

这段代码有Python函数吗?,python,graph,Python,Graph,我通过在列表中放置节点创建了一个图。节点是一个具有“父”、“子”和“边”属性的类。我想检查符号是否位于当前节点的任何子节点的边缘,如果是,则将当前节点更改为该节点。如果没有,则使用该边创建一个新节点,并将当前节点更改为该边 我是这样做的: match = False for daughter in currentNode.daughters: if daughter.edge == currentSymbol: match = True currentNo

我通过在列表中放置节点创建了一个图。节点是一个具有“父”、“子”和“边”属性的类。我想检查符号是否位于当前节点的任何子节点的边缘,如果是,则将当前节点更改为该节点。如果没有,则使用该边创建一个新节点,并将当前节点更改为该边

我是这样做的:

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…else
语法:

for daughter in currentNode.daughters:
    if daughter.edge == currentSymbol:
        currentNode = daughter
        break
else:
    trie.append(node(currentNode, [], currentSymbol)
    currentNode = trie[-1]
仅当for循环正常完成且从未中断时,才会执行
else
部分。因此,在您的情况下,如果找到匹配项,您将中断循环(中止循环),并跳过
else
。如果找不到匹配项,则永远不会中断循环,并且执行
else

for/else
,可能:
for daughter in currentNode.daughters:
    if daughter.edge == currentSymbol:
        currentNode = daughter
        break
else:
    trie.append(node(currentNode, [], currentSymbol)
    currentNode = trie[-1]