Pythonでリストの要素をソート(並べ替え)するには以下2つの関数があります。
- listのメソッド: list.sort()
- 標準組込み関数: sorted(iterable)
本記事では、これらの違いと使い方についてまとめます。
list.sort()、sorted()の違い
それぞれの違いは下記の通りです。
関数名 | 内容 |
---|---|
list.sort() |
|
sorted() |
|
[Python] イテレータとイテラブルについて
以下、それぞれの関数の詳細について記載します。
list.sort()
リストをインプレースでに並び替えます(デフォルトは昇順)。返却値はNoneです。
リストのメソッドなので、リスト以外は使えません。
※第二引数以降のkey, reverseについては後述。
例を以下に示します。
sorted()
任意のイテラブルを引数に設定することが出来ます。
返却値はソートされたリストです(デフォルトは昇順)。元のデータは変わりません。
※第二引数以降のkey, reverseはsort()と同様で後述します。
例を以下に示します。
sorted()はリスト以外のイテラブルでも使えます。
※タプルや辞書の様に要素の中身が2つ以上ある場合は、一番左の要素でソートされます。
別の要素でソートする場合は後述のKeyパラメータを使います。
以下、具体例を示します。
Key function
keyパラメータを使うと、並べ替えの際に条件を指定することができます。
(要素をソートする際にデータを加工したり、ソートする要素を指定したり・・・)
具体的な例をいくつか挙げてみます。
例その1:単語の大文字・小文字を区別なく並べ替える
keyパラメータにkey=str.lowerを設定すると、文字列が全て小文字に変換されてからソートされます。
例その2:タプルの二番目の値でソートしたい場合
lambda関数を使うことも可能です。
以下は、タプルの二番目の要素でソートした場合の例です。
尚、この処理はOperatorモジュール(この場合はitemgetter()メソッド)を使うと、もう少し簡単に書けます。
例その3:文字列の長さでソートしたい場合
key = lenとすると文字列の長さでソートできます。
下記は文字列を長さの短い順に並べた例です。
例その4:辞書のvalueでKeyをソートする場合
辞書のvalueでkeyを並び替える例を2つ示します。
reverseパラメータ
reverseパラメータは昇順でソートするか、降順でソートするかを設定します。
- reverse = False : 昇順(デフォルト)
- reverse = True:降順
例を以下に示します。
確認した環境
- OS: Ubuntu 20.04LTS
- Python: ver3.11.2
まとめ
今回は、データの並べ替えについてまとめました。
- list.sort()とsorted()の使い方と違い
- キーワード引数key, reverseの使い方