【Python】sorted()関数を使ってリスト等の要素をソートする!sort()との違いも解説!

Pythoでリスト等の要素をソートするにはsorted()を使用します。

sorted()はリスト等(リスト、タプル、辞書、配列)の要素や文字列の文字を並び替えるメソッドであり、並び替えを行うことで昇順・降順など、簡単に並べ替えることができます。

しかし、sorted()関数以外にもsort()メソッドというものもありますので注意が必要です。

今回はsorted()関数を使ってリスト等の要素をソートする方法について以下の内容について解説していきます。

⚫︎ リスト等の要素を昇順にソートする場合
⚫︎ リスト等の要素を降順にソートする場合
⚫︎ 並び替えの基準を他の関数で行ってソートする場合

⚫︎ 二次元のリスト等の要素をソートする場合
⚫︎ 三次元リスト等の要素をソートする場合

⚫︎ sorted()とsort()の違い

sorted()とは

sorted()関数は、指定された反復可能オブジェクトのソートされたリストを返します。
昇順または降順を指定でき、文字列はアルファベット、ひらがな、カタカナの順に並べ替えられ、数値は数値順に並べ替えられます。

sorted()の書き方

sorted()の構文は下記となります。

パラメータ

パラメータの説明は下記となります。

⚫︎ リストなど
(ソート、リスト、辞書、タプルなどのシーケンス)
⚫︎ key
順序を決定するために実行する関数
(デフォルトはなし)
⚫︎ reverse
ブール値となり、falseは昇順で並べ替え、trueは降順で並べ替えられる
(デフォルトはfalse)

sorted()関数は、指定された反復可能オブジェクトのソートされたリストを返します。
昇順または降順を指定でき、文字列はアルファベット、ひらがな、カタカナの順に並べ替えられ、数値は数値順に並べ替えられます。

リスト等の要素をソートするサンプルコード

sorted()関数を使ってリスト等の要素をソートするサンプルコードを紹介します。

リスト等の要素を昇順にソートする場合

リスト等の要素を昇順にソートする場合はsorted()関数のパラメータであるreverseにFalse(Fは大文字)を指定します。

しかし、デフォルトがfalseなので引数reverseを指定しなくても昇順に並び替えることができます。

まずは、リスト(list)の要素を昇順にソートしてみます。

リストの場合

出力結果

[-40, 0.5, 13, 1000]
[‘lion’, ‘きつね’, ‘ウサギ’, ‘カメ’, ‘タヌキ’]

リストの要素が昇順にソートされています。

続いて、タプル(tuple)の要素を昇順にソートしてみます。

タプルの場合

出力結果

[0.5, 13, -30, 1000]
[‘あきもと’, ‘すずき’, ‘たなか’, ‘なかむら’]

タプルの要素が昇順にソートされています。

続いて、辞書の要素を昇順にソートしてみます。

辞書の場合

出力結果

[‘a’, ‘b’, ‘c’, ‘d’]
[‘apple’, ‘ball’, ‘cat’, ‘desk’]
[(‘a’, ‘apple’), (‘b’, ‘ball’), (‘c’, ‘cat’), (‘d’, ‘desk’)]

辞書の要素が昇順にそれぞれソートされています。

続いて、配列の要素を昇順にソートしてみます。

配列の場合

出力結果

[1000, 13, 5, -30]
[‘か’, ‘ず’, ‘と’, ‘む’]

配列の要素が昇順にそれぞれソートされています。

続いて、文字列の文字を昇順にソートしてみます。

文字列の場合

出力結果

HelloWorld
[‘H’, ‘W’, ‘d’, ‘e’, ‘l’, ‘l’, ‘l’, ‘o’, ‘o’, ‘r’]

文字列の文字の要素が昇順にそれぞれソートされています。

リスト等の要素を降順にソートする場合

リスト等の要素を降順にソートする場合はsorted()のパラメータのreverseにTrue(Tは大文字)を指定します。

リスト(list)の場合

出力結果

[1000, 13, 0.5, -40]
[‘タヌキ’, ‘カメ’, ‘ウサギ’, ‘きつね’, ‘lion’]

リストの要素が降順にそれぞれソートされています。

続いて、タプル(tuple)の要素を降順にソートしてみます。

タプル(tuple)の場合

出力結果

[1000, -30, 13, 0.5]
[‘なかむら’, ‘たなか’, ‘すずき’, ‘あきもと’]

タプルの要素が降順にソートされています。

続いて、辞書の要素を降順にソートしてみます。

辞書(dict)の場合

出力結果

[‘a’, ‘b’, ‘c’, ‘d’]
[‘apple’, ‘ball’, ‘cat’, ‘desk’]
[(‘a’, ‘apple’), (‘b’, ‘ball’), (‘c’, ‘cat’), (‘d’, ‘desk’)]

辞書の要素が降順にそれぞれソートされています。

続いて、配列の要素を降順にソートしてみます。

配列(array)の場合

出力結果

[1000, 13, 5, -30]
[‘か’, ‘ず’, ‘と’, ‘む’]

配列の要素が降順にそれぞれソートされています。

続いて、文字列の文字を降順にソートしてみます。

文字列の場合

出力結果

HelloWorld
[‘r’, ‘o’, ‘o’, ‘l’, ‘l’, ‘l’, ‘e’, ‘d’, ‘W’, ‘H’]

文字列の要素が昇順にそれぞれソートされています。

並び替えの基準を他の関数で行ってソートする場合

並び替えの基準を他の関数で行ってソートする場合はsorted()のパラメータであるkeyに関数名を指定します。

まずは、リストで並び替えの基準をabs関数で行ってソートしてみます。

リスト(list)の場合

出力結果

[1000, -40, 13, 0.5]

absは絶対値を表示することができるabs()であり、reverseがTrueである為、絶対値の降順に並び替えられています。

続いてタプルで並び替えの基準をlen関数で行ってソートしてみます。

タプル(tuple)の場合

出力結果

[‘カメ’, ‘きつね’, ‘タヌキ’, ‘ウサギ’, ‘lion’]

lenは文字列の長さを数えることができるlen()である為、文字列の長さの昇順に並び替えられています。

多次元のリスト等の要素をソートするサンプルコード

多次元のリスト等(リスト、タプル)の要素をソートしてみます。

二次元のリスト等の要素をソートする場合

二次元のリスト等の要素ソートしていきます。

まずは二次元のリスト(list)の要素をソートします。

リスト(list)の場合

出力結果

[-30, 0.5, 13, 1000]
[‘やまもと’, ‘あきもと’]
[‘たなか’, ‘すずき’, ‘なかむら’]

二次元のリストの要素をソートしています。

続いて、二次元のタプルの要素をソートします。

タブル(tuple)の場合

出力結果

[-30, 0.5, 13, 1000]
[‘ほんだ’, ‘きむら’, ‘いでぐち’]
[0.5, 13, -30, 1000]

二次元のタプルの要素をソートしています。

三次元リスト等の要素をソートする場合

三次元のリスト等の要素ソートしていきます。

まずは三次元のリスト(list)の要素をソートします。

リスト(list)の場合

出力結果

[-30, 1000]
[‘やまもと’, ‘やました’]
[‘たなか’, ‘すずもと’]

三次元のリストの要素をソートしています。

続いて、三次元のタプルの要素をソートします。

タブル(tuple)の場合

出力結果

[-30, 0.5, 13, 1000]
[‘ほんだ’, ‘きむら’, ‘いでぐち’]
[0.5, 13, -30, 1000]

三次元のタプルの要素をソートしています。

sorted()とsort()の違い

並び替える関数としてsort()関数というものもあります。
この2つ違いとしては「新しいリストを作るか作らないか」です。

sort()は元のリストからソート行いますが、今回解説したsorted()はソートを行った新たなリストを生成します。
言葉ではよくわからないかと思いますのでコードを書いて解説します。

sort()を使って要素を並び替えると、下記のようになります。

sort()の例1

出力結果

[-1, 1, 6, 10, 35, 78]

list1をソートしてlist1を出力しています。
続いて、sorted()を使って要素を並び替えると、下記のようになります。

sorted()の例

出力結果

[-1, 1, 6, 78, 10, 35]
[-1, 1, 6, 10, 35, 78]

list1をソートしたバージョンをlist2という変数に格納しています。
つまり、list1自体はそのままだということです。

sort()でsorted()のように作成してみると、ソートした新しいリストを生成しない為、Noneが返ってきます。

sort()の例2

出力結果

[-1, 1, 6, 10, 35, 78]
None

今回のポイント

sorted()でリスト等の要素をソートする

⚫︎ Pythonでリスト等の要素をソートするにはsorted()を使用する

⚫︎ リスト等の要素を昇順にソートする場合はsorted()をそのまま使用するかパラメータのreverseをFalseに指定する
(デフォルトはreverseがfalseである)

⚫︎ リスト等の要素を降順にソートする場合はsorted()のパラメータのreverseをTrueに指定する

⚫︎ 並び替えの基準を他の関数で行ってソートする場合はsorted()のパラメータであるkeyに関数名を指定する

⚫︎ sorted()とsort()の違いは新しいリストを作るか作らないかである

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し