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

【Python入門】sorted関数:ソートされたリストの作成

sorted関数:ソートされたリストの作成

 sorted関数は、与えられたイテラブル(リスト、タプル、文字列など)の要素を並び替えた新しいリストを返します。元のイテラブルは変更されないため、ソート前後の状態を比較することが可能です。さらに、引数reverse=Trueを指定することで、降順(逆順)のソートも行えます。ここでは、別の例題プログラムを用いて、その基本機能と応用方法を詳しく解説します。

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

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

1.sorted関数の基本機能

 sorted関数は、簡単な書式でイテラブルをソートした新しいリストを生成します。以下の例では、果物の名前を格納したリストを用いて、昇順と降順のソート方法を紹介します。

1.1. 基本的な昇順ソート

まずは、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']

解説

  • 最初に、fruitsというリストに5種類の果物を定義しています。
  • sorted(fruits)を呼び出すと、元のリストを元にソートされた新しいリストが返されます。
  • ここで、元のfruitsリストは変更されず、そのままの順番で残っているため、ソート処理が「非破壊的」であることが確認できます。

1.2. 逆順(降順)ソート

次に、reverse=Trueを指定して、リストを降順にソートする方法を見てみます。

サンプルプログラム

# sorted関数で降順にソートされた新しいリストを作成
sorted_fruits_desc = sorted(fruits, reverse=True)
print("降順にソートされたリスト:", sorted_fruits_desc)
# 出力例: 降順にソートされたリスト: ['orange', 'kiwi', 'grape', 'banana', 'apple']

実行結果

降順にソートされたリスト: ['orange', 'grape', 'banana', 'apple']

解説

  • sorted(fruits, reverse=True)とすることで、リスト内の文字列を逆順に並び替えた新しいリストが作成されます。
  • 引数reverse=Trueがあるため、通常の昇順ソートとは反対の順序になっている点に注意してください。

また、以下の表は、基本操作とその結果の違いをまとめたものです。

操作コード例結果例
元のリストfruits = ['orange', 'apple', ...]['orange', 'apple', 'banana', 'kiwi', 'grape']
昇順ソートsorted(fruits)['apple', 'banana', 'grape', 'kiwi', 'orange']
降順ソートsorted(fruits, reverse=True)['orange', 'kiwi', 'grape', 'banana', 'apple']

2.sorted関数の応用と確認方法

 sorted関数はリストに限らず、さまざまなイテラブルに適用可能です。ここでは、ソート結果の確認方法と、他のイテラブルへの応用例を紹介します。

2.1. ソート結果と元のデータの比較

 sorted関数は元のデータを変更しないため、ソート前後のリストを比較することができます。たとえば、以下のように元のリストとソート済みリストの両方を表示して、その違いを確認できます。

サンプルプログラム

# 元のリストの表示
print("元のリスト:", fruits)

# 昇順ソートしたリストの表示
print("ソート済みリスト:", sorted(fruits))

実行結果

元のリスト: ['orange', 'apple', 'grape', 'banana']
ソート済みリスト: ['apple', 'banana', 'grape', 'orange']

解説

  • このコードでは、元のfruitsリストをそのまま表示した後、sorted関数の結果も表示しています。
  • この手法により、sorted関数が新たなリストを返すため、元のリストが保持されていることが確認できます。

2.2. 他のイテラブル型へのsorted関数の適用

 sorted関数はリスト以外のイテラブル型(タプル、文字列、rangeオブジェクトなど)にも利用できます。以下は、文字列とタプルに対する例です。

サンプルプログラム

# 文字列のソート
word = "python"
sorted_word = sorted(word)
print("文字列のソート結果:", sorted_word)
# 出力例: 文字列のソート結果: ['h', 'n', 'o', 'p', 't', 'y']

# タプルのソート
numbers = (3, 1, 4, 1, 5, 9)
sorted_numbers = sorted(numbers)
print("タプルのソート結果:", sorted_numbers)
# 出力例: タプルのソート結果: [1, 1, 3, 4, 5, 9]

実行結果

文字列のソート結果: ['h', 'n', 'o', 'p', 't', 'y']
タプルのソート結果: [1, 1, 3, 4, 5, 9]

解説

  • 文字列の場合、個々の文字がリストの要素として扱われ、アルファベット順に並び替えられます。
  • タプルの場合も、数値が昇順に並び替えられ、新しいリストとして返されます。
  • これらの例は、sorted関数がリスト以外のイテラブルに対しても柔軟に動作することを示しています。

まとめ

sorted関数は、元のイテラブルを変更せずにソート済みのリストを返す便利な関数です。

  • 昇順ソート: 単にsorted(イテラブル)とすることで、アルファベット順や数値の小さい順に並び替えられます。
  • 降順ソートreverse=Trueを指定することで、逆順に並び替えたリストを得ることができます。
  • 応用例: リスト以外の文字列やタプルなど、多様なイテラブルに対しても利用可能です。

 次のステップでは、イテラブル内の要素の最小値と最大値を取得するためのmin関数とmax関数について、さらに詳しく解説していきます。