Pythonでは、リストをソートし、そのソートされた順序の元のインデックスを取得する方法があります。これは、リストの要素を特定の順序に並べ替え、その並べ替えた順序に対応する元のインデックスを知りたい場合に便利です。
方法1: 組み込み関数を使用する
Pythonの組み込み関数sorted()
とenumerate()
を使用して、ソートされたリストのインデックスを取得することができます。
myList = [1, 2, 3, 100, 5]
sorted_indices = [i[0] for i in sorted(enumerate(myList), key=lambda x:x[1])]
print(sorted_indices) # Output: [0, 1, 2, 4, 3]
このコードでは、enumerate(myList)
で元のリストの各要素とそのインデックスをタプルとして持つ新しいリストを作成します。次に、sorted()
関数を使用して、この新しいリストを要素の値(x[1]
)に基づいてソートします。最後に、リスト内包表記を使用して、ソートされたリストのインデックスを抽出します。
方法2: NumPyを使用する
NumPyライブラリを使用しても、ソートされたリストのインデックスを取得することができます。
import numpy
myList = [1, 2, 3, 100, 5]
sorted_indices = list(numpy.argsort(myList))
print(sorted_indices) # Output: [0, 1, 2, 4, 3]
このコードでは、numpy.argsort()
関数を使用して、ソートされたリストのインデックスを取得します。
これらの方法を使用すれば、Pythonでリストをソートし、そのソートされた順序の元のインデックスを簡単に取得することができます。適切な方法を選択することで、コードの効率と可読性を向上させることができます。