このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】sortメソッド:リストの値を並べ替える

リストの値を並べ替える:sortメソッドの使い方

 Pythonでは、リストの要素を昇順や降順に並べ替えるための組み込みメソッドとしてsort()が提供されています。このメソッドを用いると、リスト自体を直接変更して整列させることができ、データの分析や表示において非常に役立ちます。
 ここでは、sort()メソッドの基本的な使い方と、そのオプションについて詳しく解説します。なお、リスト自体を変更せずに新しいソート済みのリストを生成するsorted()関数についても説明します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.sort()メソッドの基本操作

1.1. 昇順ソート

 sort()メソッドを使用すると、リストの要素がデフォルトで昇順に整列されます。たとえば、以下の例では、フルーツ名のリストを昇順に並べ替えます。

サンプルプログラム

# フルーツのリストを作成
fruits = ['orange', 'apple', 'grape', 'banana']
print("ソート前:", fruits)  # 出力例: ソート前: ['orange', 'apple', 'grape', 'banana']

# sort()メソッドを使用して昇順にソート
fruits.sort()
print("昇順ソート後:", fruits)  # 出力例: 昇順ソート後: ['apple', 'banana', 'grape', 'orange']

実行結果

ソート前: ['orange', 'apple', 'grape', 'banana']
昇順ソート後: ['apple', 'banana', 'grape', 'orange']

解説

  • fruits.sort()はリストfruits自体を昇順に整列させます。
  • この操作はリストをインプレースで変更するため、戻り値はNoneです。

1.2. 降順ソート

 sort()メソッドでは、キーワード引数reverse=Trueを指定することで、リストの要素を逆順(降順)に並べ替えることができます。

サンプルプログラム

# すでに昇順にソートされたリストを逆順にソートする
fruits.sort(reverse=True)
print("降順ソート後:", fruits)  # 出力例: 降順ソート後: ['orange', 'grape', 'banana', 'apple']

実行結果

降順ソート後: ['orange', 'grape', 'banana', 'apple']

解説

  • fruits.sort(reverse=True)はリストfruitsの要素を降順に整列させます。
  • 昇順と同様に、リスト自体が変更され、戻り値はNoneとなります。

2.sort()メソッドとsorted()関数の違い

2.1. sort()メソッド

 sort()メソッドはリスト自体を変更するため、元のリストの順序は破壊的に変更されます。これにより、メモリ効率が良い反面、元の順序を保持したい場合には注意が必要です。

2.2. sorted()関数との比較

 一方、sorted()関数は元のリストを変更せず、ソートされた新しいリストを返します。sorted()関数はリストだけでなく、タプルや文字列などのイテラブルにも使用可能です。
例えば、以下の例では、元のリストはそのままにして、新たにソート済みのリストを作成しています。

サンプルプログラム

# 元のフルーツリスト
fruits = ['orange', 'apple', 'grape', 'banana']
print("元のリスト:", fruits)  # 出力例: 元のリスト: ['orange', 'apple', 'grape', 'banana']

# sorted()関数を使って昇順の新しいリストを作成
sorted_fruits = sorted(fruits)
print("sorted()による昇順ソート:", sorted_fruits)  # 出力例: sorted()による昇順ソート: ['apple', 'banana', 'grape', 'orange']
print("元のリスト(変更なし):", fruits)  # 出力例: 元のリスト(変更なし): ['orange', 'apple', 'grape', 'banana']

実行結果

元のリスト: ['orange', 'apple', 'grape', 'banana']
sorted()による昇順ソート: ['apple', 'banana', 'grape', 'orange']
元のリスト(変更なし): ['orange', 'apple', 'grape', 'banana']

解説

  • sorted(fruits)は、元のfruitsリストを変更せず、ソートされた新しいリストを返します。
  • 両者の使い分けは、元のデータを維持する必要があるかどうかで判断します。

まとめ

以下の表に、ここで解説した「リストの値を並べ替える」操作に関する主要なポイントをまとめます。

項目説明
昇順ソートsort()メソッドを使用してリストを昇順に並べ替える。リスト自体が変更される。
降順ソートsort(reverse=True)を指定してリストを降順に並べ替える。
sort()メソッドの特徴リストをインプレースで変更するため、元の順序は失われる。
sorted()関数との違いsorted()関数は元のリストを変更せず、新しいソート済みのリストを返す。

 次のコンテンツでは、sorted関数:ソートされたリストの作成についてより詳しく解説します。sorted関数の基本的な使い方や応用例を通じて、元のリストを保持しながら新たなソート結果を得る方法を学び、より柔軟なデータ操作を実現しましょう。