给定一个Python列表,包含4个点的8个x,y坐标值(全部为正数),如
[x1, x2, x3, x4, y1, y2, y3, y4]
((xi, yi)
是第i个点的x和y坐标),
如何对其进行排序,使新的列表[a1, a2, a3, a4, b1, b2, b3, b4]
中1,2,3,4的坐标(ai, bi)
按顺序在xy平面上以顺时针方向排列,其中1最靠近原点,即像这样 2--------3
| |
| |
| |
1--------4
点的大致形状将为平行四边形。
目前,我的想法是将具有最小值(x+y)的点作为1,然后在其余坐标中找到最小x的点作为2,通过最大值(x+y)找到3,并将剩下的点作为4。
cmp
函数。计算角度意味着我们可以将它们用作key
参数的比较值,这更加高效。请参阅为什么在Python3.0中删除了sort/sorted的cmp参数? - blhsing