我有一个具有(x,y)格式坐标的元组列表。我想按逆时针方向对其进行排序/排列。例如:
[(0,1),(3,1),(-1,0),(2,2)]
Run Code Online (Sandbox Code Playgroud)
排列的清单应为:
[(3,1),(2,2),(0,1),(-1,0)]
Run Code Online (Sandbox Code Playgroud)
注意:列表中可以有“ n”个元组,并且(0,0)可以是列表的一部分。
您可以使用2参数反正切来从(1,0)计算角度并将其排序:
>>> vec = [(0,1),(3,1),(-1,0),(2,2)]
>>> sorted(vec, key=lambda p: math.atan2(p[1], p[0])) # atan2(y, x)
[(3, 1), (2, 2), (0, 1), (-1, 0)]
Run Code Online (Sandbox Code Playgroud)
(图片由维基百科提供。)
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |