Python:如何在子数组中找到最小和最大值?
我有一个这样的数组:
[[499, 3], [502, 3], [502, 353], [499, 353]]
这些点是一个矩形的四个角。
我需要找出左上角、右上角、左下角和右下角的点。
用什么样的Python代码来实现这个呢?
谢谢!
2 个回答
0
这段代码是用来做某种操作的,但具体的功能可能需要根据上下文来理解。通常情况下,代码块里会包含一些指令或者函数,这些指令会告诉计算机该怎么做。
如果你看到类似这样的代码块,通常它们是用来展示某个特定的编程概念或者解决某个问题的。理解这些代码的关键在于知道每一行代码的作用,以及它们是如何相互配合的。
总之,代码块是编程中非常重要的一部分,掌握它们能帮助你更好地理解程序是如何运行的。
vertices = [[499, 3], [499, 353], [502, 3], [502, 353]]
# if the origin is the top left
(topleft, bottomleft, topright, bottomright) = sorted(vertices)
# if the origin is the bottom left
(bottomleft, topleft, bottomright, topright) = sorted(vertices)
2
编辑:感谢tokand指出可以使用元组解包来实现这个。
你可以对它进行排序。
(bottomleft, bottomright,topleft, topright) = sorted(vertices)
或者你也可以用下面的方法就地处理:
corners.sort()
(bottomleft, bottomright,topleft, topright) = corners
# the unpacking here is redundant but demonstrative
作为参考,排序后的输出是:
>>> 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函数快,所以从实际角度来看,这样做也是最优的)。