我有以下数组:

[[499, 3], [502, 3], [502, 353], [499, 353]]

它们是矩形的顶点。
我需要找到左上,右上,左下和右下的顶点。
最好的python代码是什么?
谢谢

最佳答案

编辑:感谢tokand指出,这可以通过打开元组来完成。

您可以对其进行排序。

(bottomleft, bottomright,topleft, topright) = sorted(vertices)


或者你可以用

corners.sort()
(bottomleft, bottomright,topleft, topright) = corners
# the unpacking here is redundant but demonstrative


作为参考,sorted的输出为:

>>> a = [[499, 3], [502, 3], [502, 353], [499, 353]]
>>> sorted(a)
[[499, 3], [499, 353], [502, 3], [502, 353]]
>>>


这将是O(nlogn),而肯定会有O(n)解决方案。但是对于这样一个大小的列表,除非您有很多,否则我认为这不是一个笨手笨脚的情况(在这种情况下,本机C实现的速度无论如何都要优于自定义python函数,因此从实际情况来看仍然是最佳的)透视。)

关于python - Python:如何在子数组元素中找到最小值和最大值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3897938/

10-11 10:53