リストをソートする方法
それでは早速リストをソートしてみましょう。リストとは、複数のオブジェクトを一つにまとめた型でしたね。
リストの使い方については、以下の記事で解説しています。チェックしてみてください。
【Python入門】listの使い方とメソッドまとめ
更新日 : 2020年5月21日
sortメソッド:リストの内容をソートする
昇順でソート
まずはsortメソッドで昇順にソートをしてみましょう。sortメソッドはリスト型のメソッドになります。
こちらのコードをご覧ください。
ls = [1,5,3,7,9,4,2,8,6]
ls.sort()
print(ls)
実行結果
[1, 2, 3, 4, 5, 6, 7, 8, 9]
このようにリストをソートすることが出来ましたね。
降順でソート
降順(大きいものが前、小さいものが後ろ)にソートする場合は、sortメソッドの引数に「reverse = True」と書いてみましょう。
リスト.sort(reverse = True)
以下は降順でソートするサンプルです。
ls = [1,5,3,7,9,4,2,8,6]
ls.sort(reverse = True)
print(ls)
実行結果
[9, 8, 7, 6, 5, 4, 3, 2, 1]
sortメソッドは破壊的(sortメソッドを使ったオブジェクトの中身が変わってしまうこと)な作業になるので、一度ソートしたリストは中身が変わってしまいます。
では次に、もとのリストを残したままソートをする方法について見ていきましょう。
sorted関数:ソートしてリストを作成
sorted関数を使えばもとのリストを残したまま(破壊的でない)ソートをすることが出来ます。
こちらのコードをご覧ください。
ls = [1,5,3,7,9,4,2,8,6]
std = sorted(ls)
print(std)
print(ls)
実行結果
[1, 2, 3, 4, 5, 6, 7, 8, 9] # std変数
[1, 5, 3, 7, 9, 4, 2, 8, 6] # ls変数
このようにもとのリストを残したまま昇順にソートをすることが出来ましたね。
sorted関数もsortメソッドと同じように引数に「reverse = True」とすれば降順のソートにすることも出来ます。
ls = [1,5,3,7,9,4,2,8,6]
std = sorted(ls, reverse=True)
print(std)
実行結果
[9, 8, 7, 6, 5, 4, 3, 2, 1]
sortメソッドとsorted関数の違いはもとのリストを残したいか消しても良いかということです。
目的によって使い分けましょう。
アルファベット順にソートする方法
次は文字列をソートしてみましょう。
例として、アルファベットをソートしてみます。
ls = ['b','a','c','B','C','A']
std = sorted(ls)
print(std)
実行結果
['A', 'B', 'C', 'a', 'b', 'c']
このように、sorted関数を使えばしっかりとアルファベットでもソートされることがわかりましたね。また、大文字と小文字が入り混じっている場合は、大文字の方が先に来ることに気をつけましょう。
これはどういうことかというと、小文字より大文字の方が文字コードで先に来ることを示します。これはPythonのコンソールを使えば確認をすることが出来ます。
print('a' > 'A')
print('a' < 'A')
実行結果
True # a > A
False # a < A
多次元のリストをソートする方法
ステップアップして多次元のリスト(リストの中にリストが入っているようなリスト)をソートしてみましょう。
こちらのコードをご覧ください。
ls = [[1,2],[7,6],[3,2],[4,5]]
std = sorted(ls)
print(std)
実行結果
[[1, 2], [3, 2], [4, 5], [7, 6]]
特に何も指定しないでソートをすると、昇順で各配列の1番目(インデックス0)の順番になっています。
各配列の2番目(インデックス1)でソートをするには、sorted関数のkeyに関数を指定します。
こちらのコードをご覧ください。
ls = [[1,5],[7,1],[3,2],[4,9]]
std = sorted(ls, key=lambda x: x[1])
print(std)
実行結果
[[7, 1], [3, 2], [1, 5], [4, 9]]
keyキーワードにラムダ式と呼ばれる関数を渡して、各配列の2番目(インデックス1)を指定しています。
ラムダ式についてはこちらの記事をご覧ください。
【Python入門】lambda(ラムダ式)の使い方
更新日 : 2020年3月10日
このkeyという引数は、sorted関数でソートするときの基準を変えることができるオプションです。
ここに「sorted関数の第一引数として与えられるリストなどの要素を一つ引数として受け取って、何かしらの値を返す関数」を渡して上げることでソートの基準を変えることができるんですね。
まとめ
ここではリストをソートする方法について以下の内容を解説しました。
- ソートとは
- sortメソッド、sorted関数でソートをする方法
- reverseメソッド、reversed関数の使い方
- アルファベット順にソートをする方法
- 多次元のリストをソートする方法
昇順のソートはわかっていても、降順はわからなかったり、アルファベットの扱いがあやふやだった人も多いのではないでしょうか。最後に紹介したラムダ式を使うソート方法は覚えておいて損がありません。
もしリストのソートについて忘れてしまったら、ぜひこの記事を読み返してみてください!