Pythonのsortedメソッドを使ってリストを昇順、降順に入れ替えたり、自作ソートを作る方法

スポンサーリンク
スポンサーリンク

イントロダクション

この記事では、Python の sorted() メソッドについて説明します。

どのプログラミング言語でも、ソートは反復処理可能なものに対して広く行われる操作です。

このソートは、昇順や降順のような任意の順序で行うことができます。

Pythonはこのタイプのソート操作を行うための幅広い選択肢を提供します。

そのうちの1つが sorted() メソッドです。

それでは、このトピックに入り、いくつかの例を見てみましょう。

Python の sorted() メソッドを理解する

Python の sorted() メソッドは、渡されたイテラブルを昇順または降順にソートし、リスト形式で返します(sorted)。

このメソッドを使用するための構文は以下の通りです。

sorted(iterable, *, key=None, reverse=False)

ここで

  • Iterable はリスト、タプル、またはセットです。このイテラブルはメソッドによってソートされ、返される。
  • キー` – デフォルトでは None に設定されています。このパラメータは、値をソートする際の基準となる値を決定します。
  • reverse – ブーリアン値、つまり true か false を受け取ります。trueを指定すると、イテラブルは逆順または降順にソートされます。一方、False` やデフォルトの条件では、昇順にソートされる。

Pythonにおけるsorted()メソッドの動作について

引数として渡された異なる値に対して、実際に任意のイテレート可能なオブジェクトを昇順または降順でソートすることができます

また、ユーザー定義関数や組み込み関数に基づくこともできます。

それでは、Pythonで sorted() メソッドをどのように使うか見てみましょう。

イテレート可能なオブジェクトをソートするための様々な方法。

Python の sorted() を使った昇順でのソート

以下のコードでは、Python の sorted() メソッドを使って、任意のイテラブルを昇順にソートしています(通常のソート)。

#initialisation of variables
list1= [2,7,6,24,73,23,57]
tup1= ('d','c','a','b')
 
print(sorted(list1)) #sorted list1
print(tuple(sorted(tup1))) #sorted list is type casted to tuple

結果は以下の通りです。

[2, 6, 7, 23, 24, 57, 73]
('a', 'b', 'c', 'd')

ここで

  • まず、2つのイテレート可能なオブジェクトを初期化します。ひとつはリスト、もうひとつはタプルです。
  • そして、それらを直接 sorted() メソッドに渡して、他の引数を与えないようにします(デフォルトでは、キーはなし、リバースは false に設定されています)。
  • 結果を表示する際、タプルの場合の結果をタイプキャストしていることに注意してください。これは、Pythonの sorted() メソッドがリスト形式でソートされたイテラブルを返すためです。

上の出力からわかるように、リストとタプルの両方が私たちの望む方法でソートされています。

Python の sorted() を使って降順でソートします。

では、Pythonの sorted() メソッドを使って降順や逆順にソートする方法について見ていきましょう。

#initialisation of variables
list1 = [2,7,6,24,73,23,57]
tup1 = ('d','c','a','b')
 
print(sorted(list1, reverse= True)) #sorted list1 in reversed order
print(tuple(sorted(tup1, reverse= True))) #reversed sorted list is type casted to tuple

結果は以下の通りです。

[73, 57, 24, 23, 7, 6, 2]
('d', 'c', 'b', 'a')

先ほどの例と同様に、リストとタプルを初期化して、それぞれの sorted() メソッドに渡します。

唯一の変更は、メソッドのリバースパラメータを True に設定したことです。

これにより、結果として得られるリストとタプルは逆順にソートされるようになります。

sorted() のキーを使ったカスタムソート

このセクションでは、sorted() メソッドの key パラメータに焦点を当てます。

先ほど見たように、任意のユーザー定義関数や組み込み関数をキーとして sorted() メソッドに渡して、どの値に基づいてソートが行われるかを決定することができます

以下の例をよく見てください。

これは、タプルのリストを、対応するリスト項目であるタプルの 3 番目の (3rd) 要素を基準にしてソートします。

#initialisation of variables
list1 = [(9,8,7), (6,5,4), (3,2,1)]
 
def f(list):
    return list[2]
print("Sorting o the basis of key function: ", sorted(list1, key=f))

を出力します。

Sorting o the basis of key function:  [(3, 2, 1), (6, 5, 4), (9, 8, 7)]

ここで、f() は、渡されたタプルの3番目の要素を返すユーザー定義関数です。

sorted()メソッドにkey` パラメータをセットすると、リスト list1 のソートが、各タプル要素の 3 番目の要素に基づいて行われることが確認されます。

もしキーが渡されなかった場合、デフォルトの none 値では、 sorted() は list1 の各タプルの 1 番目の要素を基準にリストをソートすることになります。

まとめ

この記事では、Pythonの sorted() メソッドを使ったソートと、その様々な使い方を学びました。

より良く理解するために、自分でコードを練習することをお勧めします。

何か質問があれば、下のコメント欄からお願いします。

タイトルとURLをコピーしました