用語比較
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冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
sort()の結果を変数へ代入してしまう初学者
b = a.sort() と書くと、b には None が入ります。list.sort()は元のリストを並べ替える代わりに None を返すためです。並べ替えた結果を別の変数で受けたい場合は b = sorted(a) と書きます。
元のリストの順序を残したまま並べ替えたい人
list.sort()は元のリストを書き換えるため、元の順序は残りません。sorted()は新しいリストを返すので、元のリストはそのままです。
辞書やタプルを並べ替えたい再受験者
list.sort()はリストにのみ定義されています。公式チュートリアルは辞書について「ソートされたリストが欲しい場合は、代わりに sorted(d) を使ってください」と述べており、リスト以外には sorted() を使います。
問題文から答えを選ぶ手順
- 1
元のリストを書き換えてよいか確認する
書き換えてよく、元の順序が不要ならlist.sort()が使えます。元の順序を残したいならsorted()です。
- 2
返り値が必要か確認する
並べ替えた結果を変数で受け取りたい場合はsorted()を使います。list.sort()の返り値は None です。
- 3
並べ替える対象を確認する
対象がリストならどちらも使えます。辞書やタプルなどリスト以外のイテラブルにはsorted()を使います。
- 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 で降順になると説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- クラス変数とインスタンス変数の違い|kindとself.nameの区別をPython3エンジニア認定基礎試験で判断する
クラス変数とインスタンス変数の違いを、公式チュートリアルのkind例とself.name例、可変オブジェクトを共有してしまう注意点、Python 3 エンジニア認定基礎試験での判断手順と確認問題まで解説します。
- 「/」と「//」の違い|真の除算と切り捨て除算をPython3エンジニア認定基礎試験で判断する
「/」(除算)と「//」(切り捨て除算)の違いを、戻り値の型、公式チュートリアルの記述、Python 3 エンジニア認定基礎試験での判断手順と確認問題まで解説します。
- 位置専用引数とキーワード専用引数の違い|/と*の位置をPython3エンジニア認定基礎試験で判断する
位置専用引数とキーワード専用引数の違いを、公式チュートリアルの/と*の書き方、pos_only_argとkwd_only_argの呼び出し例とTypeError、使い分けのガイド、Python 3 エンジニア認定基礎試験での判断手順と確認問題まで解説します。
よくある質問
Qsort()とsorted()はどちらを使えばいい?
元のリストを書き換えてよいならlist.sort()、元のリストを残して新しいリストが欲しいときや、リスト以外を並べ替えるときはsorted()を使います。
Qa.sort()の返り値は何?
None です。公式ドキュメントは、sorted との混乱を避けるため None を返すと説明しています。
Qsorted()はリスト以外にも使える?
はい。公式ドキュメントは、sorted()が任意のイテラブルを受け付けると説明しています。
Q降順に並べ替えるにはどうする?
list.sort()、sorted()のどちらにも reverse=True を渡します。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
