Рассчитать два максимума одновременно? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть список объектов 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 голосов
/ 06 декабря 2018

Это было бы возможно при использовании numpy при условии, что x и y находятся в одном двумерном массиве:

import numpy as np


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

Но это будет означать, что вам придется реструктурироватьданные.При этом, если это единственная причина, по которой вам нужен NumPy, я думаю, что я буду придерживаться беспорядка.

0 голосов
/ 06 декабря 2018

Нет, не совсем.То, что у вас уже есть, - лучший способ, просто вызвать max дважды.

В любом случае, подумайте об этом так: будь вы один раз повторяете и делаете два сравнения в течение каждой итерации, или вы повторяете два раза и делаете одно сравнениево время итерации это не имеет большого значения в конце.

...