python 如何将0到+Pi到-Pi到0范围内的Angular 排序为线性范围?

bihw5rsg  于 2022-12-02  发布在  Python
关注(0)|答案(1)|浏览(121)

我试图解决一个问题,将0到+Pi弧度和+Pi到-Pi到0弧度范围内的Angular 作为一个连续范围进行排序。我知道这可能很难理解。让我在下面引用一个例子。
下面是我在对一系列杂乱的Angular 进行排序后想要得到的最终范围的示例:

Example Inputs
Case - 1: Pi/4, 0, Pi/2, -Pi/20, Pi, -Pi/4, -Pi, -3*Pi/4, 3*Pi/4, -Pi/2, -Pi/10
Case - 2: -Pi/20, Pi/2, Pi, -Pi/2, -Pi/10, -Pi/4, Pi/4, 0,-Pi, -3*Pi/4, 3*Pi/4

Expected Output
0, Pi/4, Pi/2, 3*Pi/4, Pi, -Pi, -3*Pi/4, -Pi/2, -Pi/4, -Pi/10, -Pi/20

正如您在上面的列表(预期输出)中所看到的,排序后的列表基本上表示一个圆中的连续Angular 范围(从0开始,进行完整的360度旋转,并在0处结束)。
如果这些数字只是在0到360的范围内,那么对它们进行排序是很容易的。但是,如果将范围分成正Angular 和负Angular ,那么排序就变得很棘手了。

**额外信息:**由于某种奇怪的性能原因,我不允许将此Angular 转换为0到2 Pi的范围进行排序。排序时必须保留该范围。我的第一个解决方案是使用(theta +2 pi)%(2*pi)将其转换为2 pi范围。但该解决方案被拒绝。因此,我现在陷入了尝试找出如何在不将其转换为不同范围的情况下对其进行排序的困境

h79rfbju

h79rfbju1#

创建一个自定义比较函数,并使用functools.cmp_to_key将其传递给sort/sorted
第一个

相关问题