假设我有5个对象:obj1obj5

obj1.x = 2.7
obj2.x = 0.9
obj3.x = 3.8
obj4.x = 1.2
obj5.x = 0.4


如何找到(有效)x的最大值,并识别相应的obj?这里的预期答案是:

x = 3.8, it belongs to obj3


顺便说一句,在实际情况下,我有500个对象。

最佳答案

如果您有一个列表,并且需要最大值的索引,则可以将maxenumerate组合在一起,使其与纯Python中的numpy.argmax等效:

l = [obj1, obj2, obj3, ...]
i = max(enumerate(l), key=lambda x: x[1].x)[0]


i将是包含最大值的索引,因此您可以将其打印为

print('x = {}, belongs to obj{}'.format(l[i].x, i + 1))


在您给出的示例中,i == 2将显示x = 3.8, belongs to obj3

10-08 03:08