gpt4 book ai didi

Python:嵌套函数外部作用域中的引用变量(非全局)

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:01 25 4
gpt4 key购买 nike

<分区>

我正在尝试递归一棵树并跟踪遍历路径,直到找到我正在寻找的元素为止。但是,我遇到了两个问题:

  1. 虽然我当前的代码返回了正确的解决方案,但它有点老套。我必须将正在遍历的当前路径推送到 final_path,然后返回 final_path[0]。如果我只是尝试设置 final_path = path,其中 final_path 是在外部范围内定义的,它不起作用。如何引用嵌套函数的外部作用域?

  2. 如果树中的值,我最终会以预序方式遍历整个树。有什么方法可以构造代码以便我可以说 “如果在遍历结束时我们还没有找到目标元素,那么只返回 [] 而不是完整路径”。我意识到我可以循环检查每个元素,但这似乎很多余。

代码:

lftlft = {'val': 3, 'left': None, 'right': {'val': 100, 'left': None, 'right': None}}
rtrt = {'val': 5, 'left': None, 'right': None}
lft = {'val': 2, 'left': lftlft, 'right': {'val': 99, 'left': None, 'right': None}}
rt = {'val': 4, 'left': None, 'right': rtrt}
T = {'val': 1,'left': lft, 'right': rt}

def get_path(root, data, path):
final_path = []

def pre_order(tree, path):
if tree is None:
return

path.append(tree['val'])

if tree['val'] == data:
final_path.append(path)
return True

return pre_order(tree['left'], path[:]) or pre_order(tree['right'], path[:])

pre_order(root, [])
print('finalpath', final_path)
return final_path[0]

get_path(T, 99, [])

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com