【Python】基本のリスト(配列) 並び替え(sort, reverse, sorted)

Python

はじめに

しげっち
しげっち

リスト(配列)の並び替えについて解説するよ

にゃーすけ
にゃーすけ

にゃーすけ・・・
すけにゃー!

しげっち
しげっち

自分の名前を並び替えてどうするの!

リストの並び替え

昇順 sort()

リストの要素を昇順で並び替えます。

list_a = [5, 7, 1, 3, 8, 6, 2, 10, 4, 9]
list_a.sort()
print(list_a)

#実行結果
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

降順 sort(reverse=True)

リストの要素を降順で並び替えます。

list_a = [5, 7, 1, 3, 8, 6, 2, 10, 4, 9]
list_a.sort(reverse=True)
print(list_a)

#実行結果
# [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

逆順 reverse()

リストの要素の順番を逆順にします。

list_a = [5, 7, 1, 3, 8, 6, 2, 10, 4, 9]
list_a.reverse()
print(list_a)

#実行結果
# [9, 4, 10, 2, 6, 8, 3, 1, 7, 5]

リストや辞書をラムダ式を使用して並び替える sort(key=lambda xxxxx)

sort関数のキーワード引数であるkeyに、並び替えしたいキーを渡すことで
要素の型が、リストや辞書である場合も並び替えすることが出来ます。

リストの要素がリストの場合その要素を指定して並び替えます。

list_a = [[3,2,1],[2,1,3], [1,3,2]]
list_a.sort(key=lambda x:x[2]) #3番めの要素をキーにして並び替え。
print(list_a)
list_a.sort(key=lambda x:x[0]) #1番目の要素をキーにして並び替え
print(list_a)

#実行結果
# [[3, 2, 1], [1, 3, 2], [2, 1, 3]]
# [[1, 3, 2], [2, 1, 3], [3, 2, 1]]
しげっち
しげっち

ラムダがでてくると少し難しくなるね

リストの中の辞書を指定したキーで並び替えます。

list_a = [{'No':3, 'Name':'Apple'},
{'No':1, 'Name':'Banana'},
{'No':2, 'Name':'Orange'}]
list_a.sort(key=lambda x:x['No']) #Noの順番で並び替え
print(list_a)

#実行結果
# [{'No': 1, 'Name': 'Banana'}, {'No': 2, 'Name': 'Orange'}, {'No': 3, 'Name': 'Apple'}]

リストの中の辞書を複数のキーで並び替える場合はタプルで指定します。
最初のキーの値が同じ場合は、次のキーの値で比較して並び替えを行います。

list_a = [{'No':10, 'Name':'Okada', 'Age':45},
{'No':30, 'Name':'Sato', 'Age':35},
{'No':20, 'Name':'Kimura', 'Age':35}]
list_a.sort(key=lambda x: (x['Age'], x['No']))#年齢順に並び替え、年齢が同じならナンバー順に並び替え。
print(list_a)

#実行結果
# [{'No': 20, 'Name': 'Kimura', 'Age': 35}, {'No': 30, 'Name': 'Sato', 'Age': 35}, {'No': 10, 'Name': 'Okada', 'Age': 45}]

元のリストを上書きしない方法 Sorted()

Sortedは、並び替えしたいリストを引数に入れると結果を戻り値で返してくれます。

しげっち
しげっち

Sortedを使うことで、元の変数の内容を書き換えることなく別の変数に並び替えた結果を取得できるね

サンプルを見てみましょう。

list_a = [5, 7, 1, 3, 8, 6, 2, 10, 4, 9]
list_b = sorted(list_a) #並び替えた結果をlist_bに代入
list_c = sorted(list_a, reverse=True) #逆順に並び替えた結果をlist_cに代入
print('list_a = {}'.format(list_a))
print('list_b = {}'.format(list_b))
print('list_c = {}'.format(list_c))

#実行結果
# list_a = [5, 7, 1, 3, 8, 6, 2, 10, 4, 9]
# list_b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# list_c = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

まとめ

  • sort()
    昇順で並び替え
  • sort(reverse=True)
    降順で並び替え
  • reverse
    逆順で並び替え
  • sort(key=lambda xxxxx)
    要素が辞書やリストの並び替え
  • Sorted()
    元の変数は書き換えず並び替えした結果を別の変数に代入する
にゃーすけ
にゃーすけ

一言で並び替えといっても色々あるにゃあ。

しげっち
しげっち

リストや辞書の並び替えが少しややこしいね。

最後まで見ていただきありがとうございます。

リストの要素を追加する方法は下記を参照ください。

リストの要素を削除する方法は下記を参照ください。

リストを範囲指定(スライス)する方法は下記を参照ください。

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