Python使用min和lambda函数查找最小代价节点
Python使用min和lambda函数查找最小代价节点
本篇内容将介绍如何使用Python中的 min 函数和 lambda 函数,找到具有最小总代价的节点。
假设您正在处理路径查找或图形搜索问题,并有一个名为 open_set 的字典,其中包含您需要考虑的节点。每个节点都包含:
cost属性:表示到达该节点的累积成本。* 到目标节点的启发式估计值(使用self.calc_heuristic函数计算)。
以下代码段演示了如何找到 open_set 中具有最小总代价的节点的索引,并将其存储在 c_id 变量中:pythonc_id = min(open_set, key=lambda o: open_set[o].cost + self.calc_heuristic(ngoal, open_set[o]))
让我们来分解这段代码:
min(open_set, ...):min函数用于查找open_set中的最小值。*key=lambda o: ...:key参数指定用于比较open_set中元素的函数。这里使用lambda函数定义了一个匿名函数,用于计算每个节点的总代价。*open_set[o].cost + self.calc_heuristic(ngoal, open_set[o]): *o代表open_set中的每个节点。 *open_set[o].cost获取节点o的累积成本。 *self.calc_heuristic(ngoal, open_set[o])计算节点o到目标节点ngoal的启发式估计值。 * 将累积成本和启发式估计值相加得到节点o的总代价。
min 函数将根据 lambda 函数返回的总代价进行比较,并返回具有最小总代价的节点的 索引,并将该索引赋给 c_id。
总结:
这段简洁的代码片段展示了如何利用Python的 min 和 lambda 函数,高效地找到具有最小总代价的节点。这在需要根据成本和启发式估计值进行决策的算法中非常实用,例如 A* 搜索算法。
原文地址: https://www.cveoy.top/t/topic/02G 著作权归作者所有。请勿转载和采集!