AI資格ドリル
資格を選ぶ↓

用語比較

sort()とsorted()の違い|元のリストを変えるか新しいリストを返すかをPython3エンジニア認定基礎試験で判断する

sort()とsorted()は、どちらも並べ替えを行う書き方です。公式チュートリアルはlist.sort()について「リストの項目を、インプレース演算 (in place、元のデータを演算結果で置き換えるやりかた) でソートします」と説明しています。一方、公式ドキュメント「ソートのテクニック」は、sorted()を呼ぶと新たにソートされたリストが返ると説明しています。元のリストを書き換えるか、新しいリストを返すかが違いです。

Python 3 エンジニア認定基礎試験では、並べ替えた結果を変数へ代入する設問で、何が代入されるかを判断させる問題が出ます。a = [5, 2, 3] に対して b = a.sort() を実行すると、a は [2, 3, 5] に変わり、b は None になります。list.sort()は元のリストを変え、戻り値としてNoneを返すためです。b = sorted(a) なら、b が新しいソート済みのリストになります。

このページは、sort()とsorted()を「どちらも並べ替える」とひとまとめに覚えている人を対象にしています。元のリストが変わるか、返り値は何か、渡せる対象は何かの3点で判断します。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。

結論

list.sort()

リストをインプレースで並べ替えるメソッド。元のリストが変わり、返り値は None。リストにだけ使える。

sorted()

新たにソートされたリストを返す関数。元のデータは変わらない。リストに限らず任意のイテラブルを渡せる。

違いを表で確認

比較軸list.sort()sorted()
公式ドキュメントの説明リストをインプレースに変更するイテラブルからソートしたリストを作成する
返り値None(sorted との混乱を避けるため)新たにソートされたリスト
渡せる対象リストにのみ定義されている任意のイテラブルを受け付ける
reverse引数真偽値で降順を指定できる真偽値で降順を指定できる

Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)

試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

sort()の結果を変数へ代入してしまう初学者

b = a.sort() と書くと、b には None が入ります。list.sort()は元のリストを並べ替える代わりに None を返すためです。並べ替えた結果を別の変数で受けたい場合は b = sorted(a) と書きます。

02

元のリストの順序を残したまま並べ替えたい人

list.sort()は元のリストを書き換えるため、元の順序は残りません。sorted()は新しいリストを返すので、元のリストはそのままです。

03

辞書やタプルを並べ替えたい再受験者

list.sort()はリストにのみ定義されています。公式チュートリアルは辞書について「ソートされたリストが欲しい場合は、代わりに sorted(d) を使ってください」と述べており、リスト以外には sorted() を使います。

問題文から答えを選ぶ手順

  1. 1

    元のリストを書き換えてよいか確認する

    書き換えてよく、元の順序が不要ならlist.sort()が使えます。元の順序を残したいならsorted()です。

  2. 2

    返り値が必要か確認する

    並べ替えた結果を変数で受け取りたい場合はsorted()を使います。list.sort()の返り値は None です。

  3. 3

    並べ替える対象を確認する

    対象がリストならどちらも使えます。辞書やタプルなどリスト以外のイテラブルにはsorted()を使います。

  4. 4

    降順の指定を確認する

    どちらも reverse=True を渡すと降順になります。降順にするためにメソッドを使い分ける必要はありません。

試験での見分け方

  • 1list.sort()は元のリストをインプレースで並べ替え、None を返す。
  • 2sorted()は新たにソートされたリストを返し、元のデータは変えない。
  • 3list.sort()はリストにのみ使え、sorted()は任意のイテラブルを受け付ける。
  • 4降順にするには、どちらも reverse=True を渡す。

誤答しやすい選択肢

b = a.sort() で b に並べ替えた結果が入ると考える

修正: list.sort()は None を返すため、b は None になります。結果を受け取りたいときは b = sorted(a) と書きます。

sorted(a) を実行すれば a 自体が並べ替わると考える

修正: sorted()は新しいリストを返すだけで、a は変わりません。a 自体を並べ替えたいなら a.sort() を使います。

sort()は辞書やタプルにも使えると考える

修正: list.sort()はリストにのみ定義されています。リスト以外のイテラブルには sorted() を使います。

確認問題

Q1a = [5, 2, 3] に b = a.sort() を実行したとき、b の値はどれ?

答え: None

list.sort()はリストをインプレースで並べ替え、None を返します。並べ替えた結果は a に反映され、a は [2, 3, 5] になります。

Q2a = [5, 2, 3] に b = sorted(a) を実行したとき、a の値はどれ?

答え: [5, 2, 3]

sorted()は新たにソートされたリストを返すだけで、元の a は変わりません。b が [2, 3, 5] になります。

Q3辞書 d のキーをソートしたリストが欲しいときに使うのはどちら?

答え: sorted(d)

公式チュートリアルは、ソートされたリストが欲しい場合は sorted(d) を使うよう述べています。list.sort()は辞書には使えません。

到達チェック

  • list.sort()が元のリストを変更し、None を返すと説明できる
  • sorted()が新しいリストを返し、元のデータを変えないと説明できる
  • list.sort()がリストにのみ、sorted()が任意のイテラブルに使えると説明できる
  • どちらも reverse=True で降順になると説明できる

同じ資格で次に知りたいこと

よくある質問

Qsort()とsorted()はどちらを使えばいい?

A

元のリストを書き換えてよいならlist.sort()、元のリストを残して新しいリストが欲しいときや、リスト以外を並べ替えるときはsorted()を使います。

Qa.sort()の返り値は何?

A

None です。公式ドキュメントは、sorted との混乱を避けるため None を返すと説明しています。

Qsorted()はリスト以外にも使える?

A

はい。公式ドキュメントは、sorted()が任意のイテラブルを受け付けると説明しています。

Q降順に並べ替えるにはどうする?

A

list.sort()、sorted()のどちらにも reverse=True を渡します。

次に見る比較

執筆: ミナト編集部(運営者情報を見る)