Pythonのsorted()関数を使うと、リストやタプルなどのデータを簡単に並べ替えることができます。
本記事では、sorted()の基本的な使い方、sort()との違い、さらにカスタムキーを使った応用的なソートまで徹底解説します。これを読めば、初心者の方でもsorted()を自在に使いこなせるようになりますので、ぜひ最後までご覧ください。
Pythonのsorted()関数とは?
Pythonのsorted()関数は、リストやタプル、文字列などの「反復可能なデータ」をソートして新しいリストを返す組み込み関数です。元のデータを変更することなく、新しいソートされたリストを返してくれるため、非常に便利な機能です。
- sorted()の基本的な使い方
- sorted()が返す値について
sorted()の基本的な使い方
sorted()関数は、Pythonでデータを並べ替えるための最も簡単な方法の一つです。この関数は、リストやタプルのような反復可能なオブジェクトを昇順でソートし、新しいリストとして返します。以下のコード例を見てみましょう。
print(sorted_numbers) # 出力: [1, 1, 2, 3, 4, 5, 6, 9]
このように、元のリストnumbersは変更されることなく、sorted()関数を使って新しいリストが生成されます。sorted()を使うとデータの並び替えが非常に簡単に行え、元のデータの状態も保持できる点が大きな特徴です。
sorted()が返す値について
sorted()関数は、新しいリストとして並べ替えた結果を返します。このため、元のデータはそのままで、新たにソートされたデータが別のオブジェクトとして得られます。例えば、以下のコードを考えてみましょう。
sorted_tuple = sorted(tuple_data)
print(sorted_tuple) # 出力: [1, 3, 7, 10]
元のタプルtuple_dataは変更されず、新しいリストsorted_tupleが生成されています。この点が、データを破壊的に変更してしまうsort()メソッドと大きく異なる点です。
さらに、Pythonの他の関数について詳しく知りたい方は、以下の記事をご覧ください。
Pythonのsorted()関数とsort()関数の違い
Pythonでは、データを並べ替えるためにsort()とsorted()の2つの異なる方法があります。それぞれの特徴と使い方を理解し、適切な場面で使い分けることが重要です。
- sort()の特徴と使用方法
- sorted()の特徴と使用方法
- どちらを使うべきかの判断基準
sort()の特徴と使用方法
sort()はリストのメソッドで、リスト自体を変更して並び替えます。つまり、元のリストの順序が変わってしまうという特徴があります。
print(numbers) # 出力: [1, 1, 2, 3, 4, 5, 6, 9]
sort()メソッドはリストに直接作用し、元のリストをソートされた状態に変更します。このメソッドはリスト専用であり、他のデータ型には使用できません。
sorted()の特徴と使用方法
sorted()は組み込み関数で、リスト以外にもタプルや文字列など、様々なデータ型に使用できます。また、元のデータを保持しつつ、新しいソート済みのリストを生成するため、非破壊的な操作が可能です。
print(sorted_numbers) # 出力: [1, 1, 2, 3, 4, 5, 6, 9]print(numbers) # 出力: [3, 1, 4, 1, 5, 9, 2, 6]
元のリストnumbersはそのまま維持され、新たにソートされたリストsorted_numbersが得られます。このように、sorted()は元のデータを変えずにソート結果を得たいときに便利です。
どちらを使うべきかの判断基準
sort()
とsorted()
のどちらを使うべきかは、用途に応じて判断が必要です。以下に判断基準をまとめましたので、ぜひ参考にしてください。
元のデータを保持したい場合 | sorted() |
元のリストを変更しても構わない場合 | sort() |
リスト以外のデータ型をソートしたい場合 | sorted() |
Pythonのsorted()関数でリストを昇順・降順にソートする方法
sorted()関数を使うことで、データを昇順や降順に並び替えることが可能です。ここでは、具体的な使い方を例を用いて説明します。
- 昇順にソートする例
- 降順にソートする例
- reverse引数の使い方
昇順にソートする例
デフォルトで、sorted()関数はデータを昇順に並び替えます。以下の例では、リストの数値を昇順で並べ替えます。
print(sorted_numbers) # 出力: [1, 1, 2, 3, 4, 5, 6, 9]
このように、sorted()を使えば、特に追加の引数を指定しなくてもデータを昇順でソートすることができます。
降順にソートする例
降順にソートしたい場合には、sorted()のreverse引数を使います。reverse=Trueと指定することで、リストを降順に並び替えることが可能です。
print(sorted_numbers) # 出力: [9, 6, 5, 4, 3, 2, 1, 1]
reverse引数の使い方
sorted()関数では、reverse引数を使うことで並び替えの順序を切り替えられます。この引数はデフォルトでFalseになっており、Trueに設定することで降順ソートが実現します。
Pythonのsorted()関数でカスタムキーを使ったソート
Pythonのsorted()関数では、key引数を用いてカスタムキーを指定し、より柔軟なソートを行うことが可能です。ここでは、具体的なカスタムソートの方法を解説します。
- key引数とlambda関数の使い方
- リスト内の辞書をカスタムソートする例
- 複雑なカスタムソートの実装方法
key引数とlambda関数の使い方
key引数にlambda関数を指定することで、特定の条件に基づいてデータをソートできます。例えば、以下の例では文字列の長さに基づいてソートを行います。
print(sorted_words) # 出力: [‘date’, ‘apple’, ‘banana’, ‘cherry’]
リスト内の辞書をカスタムソートする例
sorted()関数を使うと、リスト内にある辞書を特定のキーに基づいてソートすることもできます。例えば、辞書が複数の人の年齢を格納している場合、年齢に基づいて並べ替えたいときには、次のようにkey引数を使用します。
{“name”: “Alice”, “age”: 25},
{“name”: “Bob”, “age”: 30},
{“name”: “Charlie”, “age”: 20}
]sorted_people = sorted(people, key=lambda person: person[‘age’])
print(sorted_people)
# 出力: [{‘name’: ‘Charlie’, ‘age’: 20}, {‘name’: ‘Alice’, ‘age’: 25}, {‘name’: ‘Bob’, ‘age’: 30}]
このように、リスト内の辞書を特定のキーで並べ替えることで、必要なデータの優先順位を簡単に変更することができます。
複雑なカスタムソートの実装方法
複雑なカスタムソートもkey引数を用いて実現できます。例えば、次の例では、名前の長さでソートしたあと、年齢で昇順に並べ替えたい場合、key引数に複数の条件を組み合わせることが可能です。
{“name”: “Alice”, “age”: 25},
{“name”: “Bob”, “age”: 30},
{“name”: “Charlie”, “age”: 20}
]sorted_people = sorted(people, key=lambda person: (len(person[‘name’]), person[‘age’]))
print(sorted_people)
# 出力: [{‘name’: ‘Bob’, ‘age’: 30}, {‘name’: ‘Alice’, ‘age’: 25}, {‘name’: ‘Charlie’, ‘age’: 20}]
ここでは、まず名前の長さでソートし、次に年齢で昇順に並べ替えています。このように複数条件を組み合わせることで、より細かなカスタマイズが可能です。
未経験からマスターレベルまで到達 | たった2日間でPythonをマスター |
初心者向けカリキュラム | AIやプログラミングの前提知識がなくても安心 |
実用的な技術 | 仕事や転職・独立に生かせるスキルを習得 |
オンラインまたは対面で受講可能 | ご自身に合った方法を選べます |
Pythonを使ってAIプログラムを作成したい方は、以下の記事が参考になると思いますので、ぜひご参照ください。
Pythonのsorted()関数まとめ
Pythonのsorted()関数は、様々なデータ型に対して簡単にソートを行うための便利なツールです。本記事では、sorted()関数の基本的な使い方から、sort()との違い、カスタムキーを使った応用的なソートまで解説しました。sorted()関数は、元のデータを変更せずにソートされた結果を新しいリストとして返してくれるため、安全にデータを操作したいときに非常に便利です。
また、sorted()はリストだけでなく、タプルや文字列、さらには辞書といったさまざまなデータ型に対応しているため、様々な用途で活用することができます。これにより、Pythonでのデータ操作がさらに効率的になります。ぜひこの記事で学んだ内容を活用して、Pythonでのソート処理を自在に扱えるようになってください。