カテゴリ: Python 更新日: 2026/01/28

Pythonのリストをソート(並び替え)する方法!sort()とsorted()の違いと使い方

Pythonのリストをソート(並び替え)する方法!sort()とsorted()の違いと使い方
Pythonのリストをソート(並び替え)する方法!sort()とsorted()の違いと使い方

先生と生徒の会話形式で理解しよう

生徒

「Pythonでリストの中身を並び替えるにはどうすればいいですか?」

先生

「Pythonにはsort()sorted()という2つの方法があるんだ。それぞれ特徴があるから、順番に説明していこう!」

生徒

「どちらを使えばいいのかわからなくなりそうです……」

先生

「大丈夫、順を追ってやっていけば理解できるよ。実際に例を使って学んでいこう!」

1. Pythonのリストとは?

1. Pythonのリストとは?
1. Pythonのリストとは?

まずはPythonのリストについておさらいしておきましょう。リストは、複数の値(データ)を1つにまとめて扱えるとても便利な仕組みです。たとえば、買い物リストや名前の一覧など、関連するデータをひとつにまとめたいときによく使われます。

リストは、角かっこ「[]」を使って作ります。中に入れるデータは、カンマで区切るだけでOKです。

例えば、次のようなコードで果物のリストを作れます。


fruits = ["りんご", "みかん", "バナナ"]

fruitsというリストには、「りんご」「みかん」「バナナ」という3つの文字列が入っています。番号のような順番がついているので、1番目だけ取り出す、最後だけ表示する、といった使い方もできます。リストを使うことで、バラバラのデータをひとまとめにして扱えるので、Pythonの基本機能の中でも特に出番の多い便利な仕組みです。

2. リストを並び替えるにはsort()とsorted()を使う

2. リストを並び替えるにはsort()とsorted()を使う
2. リストを並び替えるにはsort()とsorted()を使う

Pythonでリストを並び替える基本はsort()sorted()の二つです。どちらも結果は「並び替えられた順序」ですが、動き方が違います。sort()は「その場で」リストの中身を書き換える一方、sorted()は「新しいリストを作って返す」ので元のデータは残ります。元を壊してよい一時的な並び替えならsort()、原本を保ちつつ結果だけ欲しいときや、リスト以外(タプル・集合・辞書のキーなど)にも使いたいときはsorted()が向いています。

まず、最小の例で違いを体験してみましょう。


nums = [5, 2, 9, 1]
ret = nums.sort()      # その場で並び替え(in-place)
print(nums)            # => [1, 2, 5, 9]
print(ret)             # => None(戻り値は使えない)

[1, 2, 5, 9]
None

sort()は戻り値を返さないため、結果は変数retではなくnums側に反映されます。次はsorted()です。


nums = [5, 2, 9, 1]
new_nums = sorted(nums)    # 新しいリストを返す
print(nums)                # 元はそのまま
print(new_nums)            # 並び替え済み

[5, 2, 9, 1]
[1, 2, 5, 9]

このように、元データを保持したい学習用ノートやログの加工ではsorted()が安心です。反対に、大量データを何度も並び替える場面で余計なコピーを避けたいときはsort()が手軽です。

どちらにも共通のオプションとして、reverse=True(大きい順)とkey=関数(並び替えの基準)が使えます。まずは逆順から。


nums = [3, 10, 1]
nums.sort(reverse=True)  # その場で降順
print(nums)

[10, 3, 1]

keyは「何を基準に大小を決めるか」を指定します。文字列の長さで並び替える例です。


words = ["りんご", "みかん", "バナナ", "ぶどう"]
sorted_by_len = sorted(words, key=len)  # 短い順
print(sorted_by_len)

['みかん', 'ぶどう', 'りんご', 'バナナ']

リスト以外の並び替えにもsorted()は有効です。例えばタプルは変更できませんが、sorted()なら並び替えた新しいリストを得られます。


t = (4, 1, 7)
print(sorted(t))   # => [1, 4, 7]

覚えておくと便利なポイントをまとめます。①元の配列を変えたいならsort()、変えたくないならsorted()。②どちらもreversekeyが使える。③sorted()はイテラブル全般に使えるので応用範囲が広い。まずは小さな配列で試し、目的に合わせて二つを使い分ける癖をつけると、後の章の比較や応用もすっと理解しやすくなります。

3. sort()の使い方と特徴

3. sort()の使い方と特徴
3. sort()の使い方と特徴

sort()は、リストそのものの中身を並び替えるメソッドです。「メソッド」とは、リストが自分自身に対して使う操作のことです。

たとえば、次のように使います。


numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)

[1, 2, 5, 9]

sort()はリスト自体を直接並び替えるので、元の順番は残りません。

4. sorted()の使い方と特徴

4. sorted()の使い方と特徴
4. sorted()の使い方と特徴

sorted()は、元のリストを変更せずに、新しく並び替えたリストを返してくれる関数です。「関数」とは、入力を受け取って処理をし、結果を返すものです。


numbers = [5, 2, 9, 1]
new_numbers = sorted(numbers)
print("元のリスト:", numbers)
print("並び替えたリスト:", new_numbers)

元のリスト: [5, 2, 9, 1]
並び替えたリスト: [1, 2, 5, 9]

このように、sorted()は元のデータを残したまま新しい順番のリストを作ってくれます。

5. sort()とsorted()の違いをわかりやすく比較

5. sort()とsorted()の違いをわかりやすく比較
5. sort()とsorted()の違いをわかりやすく比較

ここで、2つの違いを簡単に表でまとめます。

項目 sort() sorted()
データの変更 元のリストを変更する 元のリストはそのまま
戻り値 なし(Noneを返す) 新しいリストを返す
使う場所 リスト専用 リスト以外にも使える

6. 昇順・降順の並び替え(小さい順・大きい順)

6. 昇順・降順の並び替え(小さい順・大きい順)
6. 昇順・降順の並び替え(小さい順・大きい順)

並び替えのときに、順番を指定するにはreverse=Trueというオプションを使います。

小さい順(昇順)は何もしない場合のデフォルトです。大きい順(降順)にするには以下のように書きます。


numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers)

[9, 5, 2, 1]

7. 文字列の並び替えもできる

7. 文字列の並び替えもできる
7. 文字列の並び替えもできる

リストの中に文字列がある場合も、並び替えができます。アルファベット順や五十音順で並びます。


fruits = ["りんご", "みかん", "バナナ", "ぶどう"]
fruits.sort()
print(fruits)

['みかん', 'りんご', 'ぶどう', 'バナナ']

この例では、日本語の文字コード順で並び替えられています。

8. ソートができない場合の注意点

8. ソートができない場合の注意点
8. ソートができない場合の注意点

リストの中に、数値と文字列が混ざっているとエラーになります。


mixed = [3, "りんご", 5]
mixed.sort()

TypeError: '<' not supported between instances of 'str' and 'int'

このように、異なる種類のデータが混ざっているとPythonは順番を決められません。全て同じ種類(数値だけ、文字列だけ)にそろえるようにしましょう。

9. 並び替えを使った活用例

9. 並び替えを使った活用例
9. 並び替えを使った活用例

並び替えは、成績の高い順や、商品の価格の安い順に並べたいときなど、さまざまな場面で活躍します。


prices = [1500, 500, 1200, 800]
cheap_to_expensive = sorted(prices)
print(cheap_to_expensive)

[500, 800, 1200, 1500]

このように、数字を並べることで見やすく整理できます。

まとめ

まとめ
まとめ

今回は、Pythonでリストを並び替えるための基本であるsort()sorted()について学びました。リストは複数の値をひとまとめにして扱える便利なデータ構造であり、その並び順を操作できることで、データの整理や表示がとてもスムーズになります。
sort()はリスト自身を直接並び替えるメソッドであり、もとの順番は失われます。一方、sorted()は元のリストをそのまま残し、新しい並び順のリストを返してくれる関数でした。これらの違いをしっかり理解しておくことで、場面に応じた使い分けができるようになります。
また、並び替えには昇順(小さい順)と降順(大きい順)があり、引数reverse=Trueを使うことで簡単に変更できます。さらに、リストの中身が文字列の場合でも、五十音順やアルファベット順に並び替えることができ、汎用性の高さが魅力です。
一方で、リストに数値と文字列が混在しているとソートできないという注意点もありました。このようなケースでは、データを事前に整えておく必要があります。
並び替えは、成績の順位付け、商品の価格順、名前順の表示など、実際のアプリケーション開発やデータ分析でも頻繁に利用されます。シンプルな例から試し、どんなデータでもきれいに整える力を身につけておきましょう。

応用例:価格の安い順に商品を並び替える

例えば、以下のように商品価格のリストを並び替えると、値段の安い順に表示できます。


prices = [2800, 1200, 4500, 900, 3300]
sorted_prices = sorted(prices)
print("安い順:", sorted_prices)

安い順: [900, 1200, 2800, 3300, 4500]

このようにsorted()を使えば、元のリストを壊すことなく、安全に並び替えができます。

先生と生徒の振り返り会話

生徒

「先生、sort()とsorted()の違いって、なんとなく似てるけど結構大事だったんですね!」

先生

「そうだね。sort()は元のリストを並び替えるけど、sorted()は新しいリストを作ってくれるんだ。使い分けを覚えておくと便利だよ。」

生徒

「成績の順番や商品を安い順にしたいときも、すぐ使えそうです!」

先生

「そう。現実のデータ処理でもよく使うから、並び替えのテクニックは覚えておいて損はないよ。」

生徒

「異なる型が混ざってるとエラーになることも、注意しないとですね!」

先生

「その通り。Pythonのエラーはヒントをくれるから、よく読んで対応できるようにしておこうね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Pythonでリストを昇順に並び替えるにはどうすればよいですか?

Pythonではsort()メソッドまたはsorted()関数を使えばリストを昇順(小さい順)に並び替えできます。デフォルトで昇順になるため、特別なオプションは不要です。
カテゴリの一覧へ
新着記事
New1
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
New2
Flask
Flaskアプリのセキュリティ対策まとめ!初心者向けに基本をやさしく解説
New3
Flask
FlaskでCookieを安全に使う方法!HttpOnly・Secureフラグの使い方を徹底解説
New4
Flask
Flaskで外部APIと連携する方法!requestsライブラリの使い方を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.5
Java&Spring記事人気No5
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.6
Java&Spring記事人気No6
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
Flask
Flaskで開発中にデータベースを初期化する方法!初心者でもわかる便利なTips
No.8
Java&Spring記事人気No8
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本