同时计算两个最大值?

时间:2018-12-06 07:37:40

标签: python python-3.x max

我有一个Point对象的列表,每个对象都有一个x和y属性。我希望在不迭代两次的情况下计算maximum_x和maximum_y。我可以这样做:

max_x = max(points, key=lambda p: p.x)
max_y = max(points, key=lambda p: p.y)

但是,这当然会重复两次。我可以手动完成,但是由于找到最大值非常简单,因此我担心它会增加混乱。内置的max函数有什么办法做到这一点?

2 个答案:

答案 0 :(得分:8)

不,不是。最好的方法就是打电话两次,max

无论如何,这样想:无论是在一次迭代中进行一次迭代并进行两次比较,还是在迭代过程中进行两次迭代并进行一次比较,最终并没有多大区别。

答案 1 :(得分:2)

假设xy位于一个二维数组中,可以使用numpy来实现:

import numpy as np


points_array = np.array([(p.x,p.y) for p in points]) 
xmax, ymax = points_array.max(axis=0)

但这意味着您将不得不重组数据。话虽如此,如果那是您需要numpy的唯一原因,我想我会坚持下去。