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!