首页 > 解决方案 > 在python中获取具有最高和最低x和y值的点

问题描述

这看起来很简单,但我想尽可能高效地做到这一点。

实际上,我对最高、最低、最右边和最左边的点感兴趣。

给定一个像[[10,2],[0,2],[1,10],[1,0],[2,3],[5,2],[7,2],[7,3],[3,8],[6,1]]

我已经做到了

max_x = max([p[0] for p in pts])
min_x = min([p[0] for p in pts])
max_y = max([p[1] for p in pts])
min_y = min([p[1] for p in pts])

但我不仅需要max_x价值。我需要整点,我宁愿不重复列表而不是需要(为了大输入的速度)。

如果它对于 N 维点(每个维度中的最高和最低)是通用的,则加分。

标签: pythonarraysmaxmin

解决方案


使用key参数,这样您就可以在仅比较一项时返回整个点。

from operator import itemgetter

max_x = max(p, key=itemgetter(0))
min_x = min(p, key=itemgetter(0))

max_y = max(p, key=itemgetter(1))
min_y = min(p, key=itemgetter(1))

您也可以使用单个循环来执行此操作,而不是调用min()and max()

min_x = max_x = min_y = max_y = p[0]

for point in p[1:]:
    if point[0] < min_x[0]:
        min_x = point
    if point[0] > max_x[0]:
        max_x = point
    if point[1] < min_y[1]:
        min_y = point
    if point[1] > max_y[1]:
        max_y = point

推荐阅读