インデックスに基づくリストのソート

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

プログラミングにおいて、目的のインデックスを含む別のリストに基づいてリストをソートすることは一般的なタスクです。このチャレンジでは、2 つのリストを引数として受け取り、2 番目のリストのインデックスに基づいてソートされた新しいリストを返す関数を作成することが求められます。

インデックスに基づくリストのソート

2 つのリストを引数として受け取り、2 番目のリストのインデックスに基づいてソートされた新しいリストを返す関数sort_by_indexes(lst, indexes, reverse=False)を作成します。この関数は以下のパラメータを持つ必要があります。

  • lst:ソート対象の要素のリスト。
  • indexeslstをソートするための目的のインデックスを表す整数のリスト。
  • reverse:オプションのブール型パラメータで、Trueに設定すると、リストを逆順にソートします。

この関数は、2 番目のリストのインデックスに基づいてソートされた新しいリストを返す必要があります。

def sort_by_indexes(lst, indexes, reverse=False):
  return [val for (_, val) in sorted(zip(indexes, lst), key=lambda x: \
          x[0], reverse=reverse)]
a = ['eggs', 'bread', 'oranges', 'jam', 'apples','milk']
b = [3, 2, 6, 4, 1, 5]
sort_by_indexes(a, b) ## ['apples', 'bread', 'eggs', 'jam','milk', 'oranges']
sort_by_indexes(a, b, True)
## ['oranges','milk', 'jam', 'eggs', 'bread', 'apples']

まとめ

このチャレンジでは、目的のインデックスを含む別のリストに基づいてリストをソートする関数を作成することが求められました。zip() 関数と sorted() 関数を使用することで、indexes の値に基づいて 2 つのリストを結合してソートすることができました。その後、リスト内包表記を使用して結果から各ペアの最初の要素を取得し、ソートされたリストを返しました。