Python

Pythonでリストの要素をソートして並び替えをする方法

By 2021年2月25日March 25th, 2021No Comments

Pythonのsort( )メソッド、sorted( )関数、reverce( )メソッドを使ってリストの中の要素を並び替えてリストのソートをする方法について解説します。

これらのメソッドや関数を使うと様々な順番にリストの中の要素を並び替えをする事ができます。

sort( )メソッドを使ってリストの要素をソートして並び替える方法

sort( )メソッドでリストの中の要素を並び替える時、引数を空白にした場合はリストの中が文字列の場合は文字コードの並び順になります。数値の場合は数値が小さい順に並び替えられ、様々な文字が混在する場合は「大文字アルファベット→小文字→ひらがな→カタカナ」のユニコード順になります。構文は下記になります。

リスト.sort()

まずは、リストの中が数値の場合です。

number = [5, 10, 0, 20]
number.sort()
print(number)

結果:

[0, 5, 10, 20]

文字列がアルファベットの場合です。

eigo = ['C', 'A', 'D', 'B']
eigo.sort()
print(eigo)

結果:

[‘A’, ‘B’, ‘C’, ‘D’]

アルファベットで大文字と小文字が混在している場合です。

eigo = ['a', 'A', 'b', 'B']
eigo.sort()
print(eigo)

結果:

[‘A’, ‘B’, ‘a’, ‘b’]

さらに複数のタイプの文字が混在する場合の並び替えです。

moji = ['a',  'あ', 'ア', 'A']
moji.sort()
print(moji)

結果:

[‘A’, ‘a’, ‘あ’, ‘ア’]

文字列が上記でした「大文字アルファベット→小文字→ひらがな→カタカナ」のユニコード順になっているのが分かります。

しかし、下記のような数値と文字列が混在しているリストはエラーになるので並び替えをする事はできません。

moji = [1, 'B',  'あ', 3]

リストの並び替えを反対の降順にしたいときはsort( )メソッドの引数に「reverce=True」と書くと降順にリストの要素を並び替えをする事ができます。

number = [5, 10, 0, 20]
number.sort(reverce=True)
print(number)

結果:

[20, 10, 5, 0]

sort()メソッドは要素をソートした新しいリストを作るのではなく元のリストの要素を並び替えています。新しいリストを作ってソートするにはsorted( )関数を使います。

sorted( )関数を使ってリストの要素をソートして並び替える方法

Pythonの組み込み関数であるsorted( )関数を使うと引数で渡されたリストのソート結果を新しいリストに格納する事ができます。構文は下記になります。

変数 = sorted(イテラブルオブジェクト, key=None, reverse=False)

第1引数以外は省略する事ができます。

number = [5, 10, 0, 20]
numbers = sorted(number)
print(numbers)

結果:

[0, 5, 10, 20]

引数に指定したリストの要素を並び替えて新しいオブジェクトとして返しています。並べ替える前のリストのオブジェクトはそのままで並べ替えた結果を新しいリストにソートして格納しています。

リストの要素を降順でソートしたい場合は第2引数に「reverse=True」と書きます。

number = [5, 10, 0, 20]
numbers = sorted(number, reverse=True)
print(numbers)

結果:

[20, 10, 5, 0]

さらに引数にキーを指定する事で並べ替える順番を様々なパターンでリストのソートをする事ができます。

文字列の文字数の長い順番でリストの中の並び替えるにはキーにlen関数を指定します。

color = ["red", "yellow", "black", "blue"]
colors = sorted(color, key=len)
print(color)

結果:

[‘red’, ‘blue’, ‘black’, ‘yellow’]

アルファベットの大文字と小文字の区別なくソートするにはキーに「str.lower」と書きます。

eigo = ['a', 'B', 'c', 'D']
eigos = sorted(eigo)
eigos_s = sorted(eigo, key=str.lower)
print(eigos)
print(eigos_s)

結果:

[‘B’, ‘D’, ‘a’, ‘c’] [‘a’, ‘B’, ‘c’, ‘D’]

引数にstr.lowerのキーを指定する事で文字列をすべて小文字に変換されて並び替えられています。

引数の「reverse」と「key」は同時に使う事ができます。

color = ["red", "yellow", "black", "blue"]
colors = sorted(color, reverse=True, key=len)
print(colors)

結果:

[‘yellow’, ‘black’, ‘blue’, ‘red’]

このようにsorted( )関数の引数にキーを指定する事でリストの中の要素を様々な順番に新しいリストでソートすることができます。

リストの要素を逆順に並び替える事ができるreverce( )メソッド

リストの中の要素を並んでいる順と逆の順番に並び替えるにはreverce( )メソッドを使います。

number = [5, 10, 0, 20]
number.reverse()
print (number)

結果:

[20, 0, 10, 5]

リストの要素を逆順に並び替えられました。sort( )メソッドと同じで新しいリストを作っているのではなく元のリストの要素で順番を変更している事になります。

まとめ

Pythonのsort( )、sorted( )、reverce( )の使ってリストの中の要素を並び替えてリストのソートをする事ができました。

sort()メソッドとsorted()関数の基本的な使い方は同じですが、sort( )メソッドは元のリストの要素をソートしているのに対し、sorted( )関数は元のリストの要素をソートして新しいリストを作る事ができます。そして、リストの要素を反対の順に並び替えれるreverce( )メソッドの使い方でした。以上、Pythonのリストの並び替えをする方法についてでした。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト
HOSL

Author HOSL

More posts by HOSL