Python 速習チュートリアル

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() は「中身は見ずに位置を反転させる」だけです。整理整頓というよりは、単なる「回れ右」のようなものですね。