arrays - 在坐标列表中查找最右上角的坐标

标签 arrays python-2.7 multidimensional-array coordinates distance

假设我有一个 (x, y) 坐标列表。一个这样的列表是这样的:

coords = [(7, 37), (6, 38), (6, 37), (7, 38), (6, 39), (7, 39), (6, 40), (7, 40), (6, 41), (7, 41), (6, 42), (7, 42), (6, 43), (7, 43), (6, 44), (7, 44), (6, 45), (7, 45), (6, 46), (7, 46), (6, 47), (7, 47), (6, 48), (7, 48), (6, 49), (7, 49), (6, 50), (7, 50), (6, 51), (7, 51), (6, 52), (7, 52), (6, 53), (7, 53), (6, 54), (7, 54), (6, 55), (7, 55), (6, 56), (7, 56), (6, 57), (7, 57)]

现在说我想找到右上角由这些坐标形成的矩形的大部分角。

最初,我以为我可以做 max(zip(*coords)[0]), min(zip(*coords)[1]) .这会给我最大的 x 值和最大的 Y 值。但是,这点不能保证在列表中。

右下角可以通过 max(coords) 找到.左上角由 min(coords) 找到.但是如果我想找到右上角,什么是最有效的方法来做到这一点。

我可以遍历列表,对于每个值,计算它与 max(zip(*coords)[0]), min(zip(*coords)[1]) 的距离。 .但是对于较大的点列表,对每个值执行平方根并不是很有效。

有没有一种快速的方法可以在大列表中找到右上角的点?

最佳答案

我找到了这个解决方案,我希望它对你有用:

top_right = max(coords, key=lambda x: (x[0], -x[1]))
编辑:我没有看到这个问题是 5 年前提出的,哈哈。

关于arrays - 在坐标列表中查找最右上角的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33389876/

相关文章:

C语言: How would I write a function to print one row per line?

java - java 二维数组列表

php - 如何将这个简单的数组转换为嵌套的 php 数组?

C:二维数组是如何工作的?

c++ - 将字符串数组传递给函数

javascript - 函数没有调用自身...足够了

javascript - 如何在python中将网页表数据转换为json对象或dict

python - 导入错误 : No module named _imagingtk

python - 总结 Python 2 中计数器的所有值

javascript - 聚合 JavaScript 数组的对象值?