Python でリストを並べ替える方法 (昇順と降順)

sort() メソッドとsorted() 関数を使用して、Python でリストを並べ替える方法を学びます。カスタムキーの並べ替えと逆順の例をご覧ください。

エディターでこのソリューションを試してください

概要

データの並べ替えは、ユーザー プロファイルを年齢順に並べ替えたり、製品を価格順にリストしたり、検索結果を整理したりする場合でも、プログラミングで最も一般的なタスクの 1 つです。 Python には、リストをソートする高度に最適化された 2 つの組み込み方法、`list.sort()` メソッドと `sorted()` 関数が用意されています。どちらも Timsort と呼ばれる非常に効率的な並べ替えアルゴリズムを使用しており、O(N log N) の時間計算量で実行されます。

2 つの主な違いは可変性です。 `list.sort()` メソッドはリストをその場でソートします。つまり、元のリストを直接変更して `None` を返します。一方、`sorted()` 関数は、元のリストを変更せずに、まったく新しいソートされたリストを返します。この区別は重要です。メモリを節約したい場合や元の順序が必要ない場合は `sort()` を使用し、元のリストをそのまま保持する必要がある場合や、タプルや辞書などのリスト以外の反復可能オブジェクトを並べ替える場合は `sorted()` を使用します。

どちらの並べ替え方法も、オプションの 2 つのキーワード引数、`reverse` と `key` を受け入れます。 「reverse」引数はブール値です。これを「True」に設定すると、リストが降順 (逆順) でソートされます。 `key` 引数は、比較前に各要素に適用される関数を受け取ります。これにより、文字列のリストを長さで並べ替えたり、辞書のリストを特定のキーで並べ替えたりするなど、複雑な並べ替えロジックが可能になります。

コードと実行の出力

このコードは、sort() とsorted() の両方を使用した数値リストの並べ替え、逆順の並べ替え、文字列の長さによるカスタム キーの並べ替えを示します。

numbers = [42, 7, 12, 89, 23]

# 1. Using sorted() (returns new list)
new_sorted = sorted(numbers)
print("Original:", numbers)
print("Sorted new list:", new_sorted)

# 2. Using sort() (in-place modification)
numbers.sort()
print("Modified original list:", numbers)

# 3. Sorting in reverse (descending)
numbers.sort(reverse=True)
print("Reverse sorted list:", numbers)

# 4. Custom sorting (by string length)
words = ["banana", "pear", "apple", "fig"]
words.sort(key=len)
print("Sorted by length:", words)
端子出力
Original: [42, 7, 12, 89, 23]
Sorted new list: [7, 12, 23, 42, 89]
Modified original list: [7, 12, 23, 42, 89]
Reverse sorted list: [89, 42, 23, 12, 7]
Sorted by length: ['fig', 'pear', 'apple', 'banana']

段階的な実装

  • 元のデータを変更せずにリストのコピーを並べ替えるには、sorted() 関数を使用します。
  • リスト オブジェクトに対して .sort() メソッドを直接使用して、リスト オブジェクトをその場で変更し、メモリを節約します。
  • 項目を降順に並べ替えるには、パラメータとして reverse=True を渡します。
  • key=lambda x: ... を使用して、カスタム プロパティ (長さやネストされた値など) に基づいて要素を並べ替えます。

よくある質問

list.sort() とsorted() の違いは何ですか?

list.sort() はリストをその場で変更して None を返しますが、sorted() は元のリストを変更せずに新しいソートされたリストを返します。

辞書のリストをキーで並べ替えるにはどうすればよいでしょうか?

key パラメータはラムダ関数またはoperator.itemgetterで使用します。例: list.sort(key=lambda item: item["age"])。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。