Maison  >  Article  >  développement back-end  >  Comment utiliser Python pour obtenir le nouvel index après avoir trié une liste désordonnée

Comment utiliser Python pour obtenir le nouvel index après avoir trié une liste désordonnée

WBOY
WBOYavant
2023-05-09 23:05:281748parcourir

Pour une liste, le tri est très simple. Pour le tri direct (de petit à grand), utilisez

list.sort()

Pour le tri inverse (de grand à petit), utilisez

list.sort(reverse=True)

Mais si vous n'êtes pas limité à obtenir une liste triée, mais que vous souhaitez également enregistrer les indices d'origine. , puis pour un numpy.array Par exemple, vous pouvez utiliser

np.argsort()

Par exemple, [1,3,2,5,6]

Après le tri, cela devient [1,2,3,5,6]

Mais nous voulons savoir que le résultat trié correspond à l'original Quel est l'indice (la réponse est [0,2,1,3,4]), vous pouvez utiliser np.argsort()

Mais si c'est un simple liste et vous souhaitez obtenir cet effet, vous pouvez utiliser

# enumerate(x)会自动构造一个tuple(a,b)
# 其中a是index,b是list里index下标对应的具体的值,后面的x是代表一个虚拟变量,即tuple(a,b)
sorted_list = sorted(enumerate(list), key=lambda x:x[1])  # x[1]是因为在enumerate(a)中,a数值在第1位
result = [x[0] for x in sorted_list]

comme ceci Le résultat renvoyé est l'index d'origine

Si vous souhaitez implémenter ce qu'il y a dans le titre, allez plus loin, c'est-à-dire que vous voulez obtenir un nouvel indice après avoir trié la liste. Par exemple, pour [1,5,2,8,3,4], vous devriez obtenir [ 0,4,1,5,2,3]

Ensuite, vous pouvez l'utiliser

# enumerate(x)会自动构造一个tuple(a,b)
# 其中a是index,b是list里index下标对应的具体的值,后面的x是代表一个虚拟变量,即tuple(a,b)
# sorted_list = [(0,1),(2,2),(4,3),(5,4),(1,5),(3,8)]
sorted_list = sorted(enumerate(list), key=lambda x:x[1])  # x[1]是因为在enumerate(a)中,a数值在第1位
for i in range(len(sorted_list)):
    list[sorted_list[i][1]] = i
.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer