【问题标题】:Relative size in list python列表python中的相对大小
【发布时间】:2021-01-11 10:12:13
【问题描述】:

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

我想获取相对大小的列表。意思是,例如,如果原始列表是[2, 5, 7, 7, 3, 10],那么所需的输出是[0, 2, 3, 3, 1, 4]

因为 2 是原始列表中的第 0 个最小的数,3 是第 1 个,等等。

有什么简单明了的方法吗?

【问题讨论】:

标签: python list


【解决方案1】:

尝试使用dictionary 进行列表推导,并使用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]
>>> 

或者使用index:

>>> 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
  • @U11-Forward 问题是你打电话给sorted len(lst) 次
猜你喜欢
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多