python中反向索引_python – 排序列表的反向索引

本文探讨如何在Python中找到已排序列表的反向索引,即从排序后的列表S恢复到原始未排序列表U的索引。通过示例展示了如何通过不同方法实现这一目标,并进行了性能测试。
摘要由CSDN通过智能技术生成

我想返回排序列表的“反向”索引.我的意思是:我有一个未排序的列表U,我通过S =排序(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)做了一点速度测试.

剧本:

import datetime as DT

import random

U=[int(1000*random.random()) for i in xrange(pow(10,8))]

S=sorted(U)

idx = sorted(xrange(len(U)), key=U.__getitem__)

T0 &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值