假设我有一个 (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/