【问题标题】:Sorting List according to values and if same value sorting it with index [closed]根据值对列表进行排序,如果相同的值使用索引对其进行排序[关闭]
【发布时间】:2021-05-17 11:08:12
【问题描述】:

我想对如下所示的给定列表进行排序

输入:-[0,0,1,0,2]

排序后我想要一个这样的列表 [1,2,4,3,5]

我们可以看到列表是否具有相同的值,它将根据索引进行比较。

我的问题的另一个例子,输入:[5,3,6,4,6] 输出必须是[3,1,4,2,5]

获得结果的最佳方法是什么?提前谢谢你。

【问题讨论】:

  • 第二个应该是 [2,4,1,3,5] 不是 [3,1,4,2,5] 吗?
  • 没有输入 [5,3,6,4,6] 因为 3 是最小的,然后是 4 和 5 所以输出应该是 [3,1,4,2,5]
  • 我很困惑,你输出的索引是从 1 开始的,不是吗?
  • 这没有任何意义。 3 在位置 2,4 在位置 4,5 在位置 1 等等...

标签: python c++ c list sorting


【解决方案1】:

[0,0,1,0,1] 创建一对,索引从1 开始,如[(1,0),(2,0), (3,1)...],然后按秒元素排序,例如:(1,0) 中的0,最后取第一个元素。

l = [0,0,1,0,2]

[i[0] for i in sorted(enumerate(l,1), key=lambda x: x[1])]
[1, 2, 4, 3, 5]

【讨论】:

    猜你喜欢
    • 2016-12-27
    • 2022-10-28
    • 1970-01-01
    • 2015-01-05
    • 2014-03-30
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多