列表python中的相对大小

列表python中的相对大小,python,list,Python,List,我有一个整数列表。每个数字可以出现几次,列表是无序的 我想得到相对尺寸的列表。也就是说,例如,如果原始列表是[2,5,7,7,3,10],则所需的输出是[0,2,3,3,1,4] 因为2是原始列表中第0个最小的数字,3是第1个,以此类推 有什么简单明了的方法可以做到这一点吗?尝试使用dictionary进行列表理解,并使用set获取唯一值,如下所示: >>> lst = [2, 5, 7, 7, 3, 10] >>> newl = dict(zip(range

我有一个整数列表。每个数字可以出现几次,列表是无序的

我想得到相对尺寸的列表。也就是说,例如,如果原始列表是
[2,5,7,7,3,10]
,则所需的输出是
[0,2,3,3,1,4]

因为2是原始列表中第0个最小的数字,3是第1个,以此类推


有什么简单明了的方法可以做到这一点吗?

尝试使用
dict
ionary进行列表理解,并使用
set
获取唯一值,如下所示:

>>> lst = [2, 5, 7, 7, 3, 10]
>>> newl = dict(zip(range(len(set(lst))), sorted(set(lst))))
>>> [newl[i] for i in lst]
[0, 2, 3, 3, 1, 4]
>>> 
或使用
索引

>>> lst = [2, 5, 7, 7, 3, 10]
>>> newl = sorted(set(lst))
>>> [newl.index(i) for i in lst]
[0, 2, 3, 3, 1, 4]
>>>

最后一个值应该是
4
。@Qiu哦,谢谢你的捕获,编辑了我的!:)虽然这在语法上看起来不错,但您正在将列表转换为一个集合,然后对索引中的每个元素进行排序。这是非常低效的。@MZ我正在使用
dict.fromkeys
now@U11-转发问题是您调用
sorted
len(lst)times几乎是重复的--尽管在有联系时略有不同。除了
set()
之外,这些方法基本相同。特别是这里的方法是
密集
,而不是
平均