如何获取排序数组的索引,除了 Python 中的某些值?

我有一个数字列表:

a=[6,8,1,0,5,0]

并且我需要从原始列表中以升序排序获取索引列表,除了像这样的 0 个元素:

index=[3,4,1,0,2,0]


吃鸡游戏
浏览 180回答 2
2回答

长风秋雁

a = [6, 8, 1, 0, 5, 0]sorted_positions = {x: i for i, x in enumerate(sorted(a))}# {0: 1, 1: 2, 5: 3, 6: 4, 8: 5}indices = [sorted_positions[x] for x in a]# [4, 5, 2, 1, 3, 1]zeroes = a.count(0)# 2answer = [    0 if x == 0    else i - zeroes + 1    for i, x in zip(indices, a)]# [3, 4, 1, 0, 2, 0]不认识语法时要搜索的术语:列表推导式、字典推导式和 python 三元运算符。对于这种情况a=[3,3,1,1,2,2],这给出了[6, 6, 2, 2, 4, 4].

慕的地8271018

使用 numpy 的argsort为这个问题提供了一定的优雅import numpy as npa=[6,8,1,0,5,0]#create a numpy arraytemp = np.array(a) #assign non zero values in array with correct argsort indices.temp[temp != 0] = np.argsort(temp[temp != 0]) + 1 print(temp)[3 4 1 0 2 0]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python