Pythonでは、リストをソートする際に元のインデックスを保持する方法があります。これは、リストの要素をソートした後で、それらの要素が元のリストでどの位置にあったかを知りたい場合に便利です。
例えば、次のようなリストがあるとします。
myList = [2, 3, 1, 4, 5]
このリストをソートすると、次のようになります。
sortedList = sorted(myList) # [1, 2, 3, 4, 5]
しかし、このソートされたリストでは、元のリストで各要素がどの位置にあったかを知ることはできません。そこで、Pythonでは次のようにして元のインデックスを保持しながらリストをソートすることができます。
sortedIndices = sorted(range(len(myList)), key=myList.__getitem__)
このコードは、range(len(myList))
でリストのインデックスのリストを作成し、key=myList.__getitem__
でソートのキーをリストの要素に設定しています。結果として得られるsortedIndices
は、ソートされたリストの各要素が元のリストでどの位置にあったかを示すインデックスのリストです。
print(sortedIndices) # [2, 0, 1, 3, 4]
このように、Pythonではリストをソートしながら元のインデックスを保持することが可能です。これは、ソート後の要素が元のリストでどの位置にあったかを知りたい場合や、ソートした結果に基づいて他のリストや配列を並べ替えたい場合などに便利です。