リストの場合、並べ替えは非常に簡単です。順方向 (小さいものから大きいものへ) に並べ替えるには
list.sort()
を使用し、逆の順序 (大きいものから小さいものへ) に並べ替えるには
list.sort(reverse=True)
を使用します。リストの場合、元の次のマークも記録したい場合は、numpy.array の場合、
np.argsort()
を使用できます。たとえば、[1,3,2,5,6]
は次のようになります。ソート後は [1,2,3,5 ,6]
になりますが、ソート結果の元の添え字が何であるかを知りたい場合 (答えは [0,2,1,3,4] です) )、np.argsort()
ただし、単純なリストでこの効果を実現したい場合は、
# 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]
を使用できます。返される結果は元のインデックスです
タイトルにあるものを実現したい場合は、さらに一歩進んで、リストを並べ替えた後に新しい添え字を取得します (たとえば、[1,5,2,8,3,4])。 [0,4,1,5,2,3]
を取得する必要があります。その後、
# 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
以上がPython を使用して不規則リストをソートした後に新しいインデックスを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。