python - 将 N 个项目的列表转换为相对排序 (0-(N-1))?

标签 python algorithm list

例如,如果我有一个不同项目的列表:

L = [100,55,104,400]

“相对”顺序可以重述:

R = [1,0,2,3]

我不知道如何将 L 转换为 R。起初我只是尝试从所有内容中减去 min(L),但这并没有将内容“压缩”到相对顺序。

我正在寻找一种有效的解决方案(不是 O(n2))。

最佳答案

您可以尝试组合使用列表理解、zipsorted:

>>> [i[1] for i in sorted(zip(L, range(4)))]
[1, 0, 2, 3]

这是 O(nlogn),因为您只需要排序一次。

关于python - 将 N 个项目的列表转换为相对排序 (0-(N-1))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30655250/

相关文章:

algorithm - 哪种链表排序算法?

python - 尝试为 python 2.7.11 安装 mathplot.lib。但找不到合适的流程。尝试了Youtube教程中的各种方法,但没有成功

python - 如何在Python中找到真阳性、真阴性、假阳性、假阴性

python - 嵌套操作的大 O 空间复杂度

python - 以与另一个列表相同的顺序放置一个列表

c++ - 如何将默认迭代器写入通用列表?

python - 将列表划分为最少集合的最快方法,枚举所有可能的解决方案

python - 如何捕获正在运行的程序的屏幕输出?

python - 在 64 位 Windows 上从哪里获取和安装 crypto.dll

algorithm - 对具有凹域的一组点进行三角剖分