计算其他类别值的最小值后如何获取类别方法的值

时间:2019-04-05 21:43:43

标签: python oop min

我有一个“节点”类,将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] 列表或元组,两种方法都可以。

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)

您应该使用[code here to duplicate elements in x[0] by x[1] times]函数。您可以以不同的方式使用它,但是在这种情况下,我认为最简单的解决方案是使用lambda函数-这是在python中编写和定义函数的较短方法。 您可以阅读有关min()函数here的更多信息,以及有关lambda函数here的更多信息。

无论如何,这段代码应该可以正常工作:

min()