【发布时间】:2019-08-07 02:37:34
【问题描述】:
我有一个简单的值列表,我需要按原始值顺序(从最大值到最小值)排序的索引。
假设列表是
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]
有什么简单的方法可以恢复实际位置吗?
【问题讨论】:
-
如果您愿意使用
numpy,您可以使用numpy.argsort:stackoverflow.com/questions/16486252/…。在你的情况下:indexedMaxList = np.argsort([7, 3, 6, 9, 1, 3])[::-1][:n].tolist()
标签: python python-3.x sorting