gpt4 book ai didi

python - 如何编写 __iter__ 从叶节点迭代回根?

转载 作者:行者123 更新时间:2023-12-01 03:17:07 25 4
gpt4 key购买 nike

我正在实现搜索算法 (BFS) 并具有以下 Node 类:

class Node:
def __init__(self, state=None, action=None, path_cost=None, parent=None):
self._state = state
self._action = action
self._path_cost = path_cost
self._parent = parent

我的 BFS 求解器返回解节点(子节点)。例如,使用此节点,我可以计算总路径成本,如下所示(此代码是另一个 Summary 类的一部分):

    def path_cost(self):
self._cost = self._node.path_cost
node = self._node.parent
while node:
self._cost += node.path_cost
node = node.parent

return self._cost

是否有更好的方法通过在 Node 中创建自定义 __iter__ 方法来实现此目的?

最佳答案

像这样的生成器函数可以工作:

class Node:
def __iter__(self):
node = self
while node:
yield node
node = node._parent

# elsewhere
cost = sum(n.path_cost for n in self._node)
# ....

关于python - 如何编写 __iter__ 从叶节点迭代回根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42374521/

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