我有一个“节点”类,将x和y作为参数。类方法计算不同的值。我有该类的多个实例,称为“节点”。我想要的是找到具有最低“ fcost”的节点,并获取该节点的x和y坐标。
我不知道如何解决此问题,因此,如果您能帮助我,将不胜感激。
class Node():
# Node class
def __init__(self, y, x):
self.y = y
self.x = x
def gcost(self):
return self.x + self.y
def hcost(self):
return self.x * self.y
def fcost(self):
return self.gcost() + self.hcost() # method that indicates
# which node to choose
node1 = Node(5,5)
node2 = Node(2,2)
nodes = [node1, node2] # I actually don't know if I should create a
# list of nodes so please tell me if I should
# not
### CODE TO SOLVE THE PROBLEM ###
在这种情况下,node1和node2之间的最低fcost是node2的fcost,因此我希望输出为:
(2,2)
或[2,2]
列表或元组,两种方法都可以。
答案 0 :(得分:0)
使用min(list, key=...)
。
min_node = min(nodes, key=lambda n:n.fcost())
print(min_node, min_node.fcost(), min_node.x, min_node.y)
key
必须是功能名称。
min
将使用它来获取价值,将其与之进行比较以找到最小的价值。
答案 1 :(得分:0)