Python リストのソート
1. 英数字でのソート (Sort List Alphanumerically)
Pythonのリストオブジェクトには sort() メソッドが用意されており、これを使用するとデフォルトで昇順(Ascending)、英数字の順にリストを並び替えることができます。
例:文字列のリストをアルファベット順にソートする
thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
thislist.sort()
print(thislist)例:数値のリストを昇順にソートする
thislist = [100, 50, 65, 82, 23]
thislist.sort()
print(thislist)2. 降順でのソート (Sort Descending)
降順(Descending)でソートしたい場合は、sort() メソッドのキーワード引数に reverse = True を指定します。
例:数値のリストを大きい順(降順)にソートする
thislist = [100, 50, 65, 82, 23]
thislist.sort(reverse = True)
print(thislist)3. カスタムソート関数 (Customize Sort Function)
key = function という引数を使用することで、独自のロジックに基づいたソートが可能です。この関数は、リストの各要素を比較する際の「基準値」を返します。
例:50に近い数値の順にソートする
def myfunc(n):
return abs(n - 50)
thislist = [100, 50, 65, 82, 23]
thislist.sort(key = myfunc)
print(thislist)4. 大文字・小文字を区別しないソート (Case Insensitive Sort)
デフォルトの sort() メソッドは、大文字と小文字を区別します。ASCIIコードの順序に従うため、すべての大文字が小文字よりも前に配置されるという、一見奇妙な結果になります。
例:大文字が優先されるデフォルトのソート
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort()
print(thislist)
# 結果: ['Kiwi', 'Orange', 'banana', 'cherry']これを一般的なアルファベット順(大文字小文字を区別しない)にしたい場合は、組み込みの文字列メソッドを key に指定します。
例:大文字・小文字を区別せずにソートする
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort(key = str.lower)
print(thislist)5. 逆順にする (Reverse Order)
ソート(並び替え)ではなく、単に現在のリストの順序を反転させたい場合は、reverse() メソッドを使用します。
例:リストの要素順をひっくり返す
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.reverse()
print(thislist)エンジニアの小話:sort() は「中身を評価して並び替える」のに対し、reverse() は「中身は見ずに位置を反転させる」だけです。整理整頓というよりは、単なる「回れ右」のようなものですね。