我想返回已排序列表的'reverse'索引。我的意思是:我有一个未排序的列表U
,我通过S=sorted(U)
对它进行排序。现在,我可以得到这样的排序索引U(idx)=S
-但是我想要S(Ridx) = U
。在
这里有一个小例子:
U=[5,2,3,1,4]
S=sorted(U)
idx = [U.index(S[i]) for i in range(len(U))]
>>> idx
[3, 1, 2, 4, 0]
Ridx = [S.index(U[i]) for i in range(len(U))]
>>> Ridx
[4, 1, 2, 0, 3]
>>>[U[idx[i]] for i in range(len(U))] == S
True
>>>[S[Ridx[i]] for i in range(len(U))] == U
True
我需要的是一个有效的方法来获得Ridx。在
谢谢!在
编辑:
好吧!我对这两个解决方案(@Jon Clements和@Whatang)做了一个小小的速度测试,回答了这个问题。在
剧本:
^{pr2}$结果是:
True
0:02:45.278000
===============
True
0:06:48.889000
感谢你们所有人的快速和有意义的帮助!在
我所能想到的最有效的方法(可能不需要寻找}:
numpy
),它可以同时用于idx
和{有了numpy你就能做到
不完全是你所要求的数据结构,但我认为这可以得到你想要的信息:
相关问题 更多 >
编程相关推荐