Python を使用して不規則リストをソートした後に新しいインデックスを取得する方法

WBOY
リリース: 2023-05-09 23:05:28
転載
1799 人が閲覧しました

リストの場合、並べ替えは非常に簡単です。順方向 (小さいものから大きいものへ) に並べ替えるには

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート