環境設定 数値 文字列 正規表現 リスト タプル 集合 辞書 ループ 関数 クラス データクラス 時間 パス ファイル スクレイピング その他

Pythonのリストを昇順・降順に並び替える(sortとreverseを使う)

最終更新日 2023.02.18

Python のリストは sort で昇順になります。

a = ['grape', 'apple', 'lemon']
a.sort()

print(a)
# ['apple', 'grape', 'lemon']

apple が grape よりも先にきました。アルファベット順に並び替わったことがわかります。数字のリストも小さい順にソートされます。

a = [2, 1, 4, 3]
a.sort()

print(a)
# [1, 2, 3, 4]

数字と文字列が混ざっているリストはエラーになります。

a = ['a', 2, 1]
a.sort()

print(a)
# TypeError: '<' not supported between instances of 'int' and 'str'

エラー内容は「数値と文字列に大小はつけられない」というものです。Python の sort は同じ種類の要素が集まったリストにしか使えません。

降順

リストを昇順にして逆順にすると、もとのリストを降順にしたリストができます。

a = ['grape', 'apple', 'lemon']
a.sort()
a.reverse()

print(a)
# ['lemon', 'grape', 'apple']

要素がアルファベットの後ろから並び替わっています。数字からなるリストも同じです。

a = [2, 1, 4, 3]
a.sort()
a.reverse()

print(a)
# [4, 3, 2, 1]

ポイント:

  • Python の sort は昇順
  • 降順は sort して reverse

もっと賢いやり方

降順はもっと簡単な書き方があります。

x = [2, 1, 4, 3]

x.sort(reverse=True)

print(x)  # [4, 3, 2, 1]

sort の引数に reverse=True を設定すると、降順にソートされます。