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 を設定すると、降順にソートされます。