作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的值列表,我需要其中的索引按原始值顺序(最大到最小)排序。
假设列表是
maxList = [7, 3, 6, 9, 1, 3]
结果应该是:
indexedMaxList = [3, 0, 2, 1, 5, 4]
到目前为止我尝试过的:
def ClusteringOrder(maxList):
sortedMaxList = maxList.copy()
sortedMaxList.sort(reverse=True)
indexedMaxList = []
for i in range(len(maxList)):
indexedMaxList.append(maxList.index(sortedMaxList[i]))
return(indexedmaxList)
问题很明显,这样做会返回第一次出现重复值的索引。在这种情况下,双 3 将返回 1 两次,因此结果将是:
indexedMaxList = [3, 0, 2, 1, 1, 4]
是否有任何简单的方法可以恢复实际位置?
最佳答案
您可以将 enumerate()
与 sorted()
中的自定义 key=
参数结合起来:
maxList = [7, 3, 6, 9, 1, 3]
print([i[0] for i in sorted(enumerate(maxList), key=lambda k: k[1], reverse=True)])
打印:
[3, 0, 2, 1, 5, 4]
关于python - 如何获取按降序排列的数组的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57381945/
我是一名优秀的程序员,十分优秀!