例如,如果我有一个不同项目的列表:
L = [100,55,104,400]
“相对”顺序可以重述:
R = [1,0,2,3]
我不知道如何将 L 转换为 R。起初我只是尝试从所有内容中减去 min(L),但这并没有将内容“压缩”到相对顺序。
我正在寻找一种有效的解决方案(不是 O(n2))。
最佳答案
您可以尝试组合使用列表理解、zip
和 sorted
:
>>> [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/