Pythonのsortとsorted: 6問の解答 制作日: 2026-10-08 UTC この教材は架空の入力を使う編集部独自の演習です。 【問1】result = sorted(durations) 実行前: [25, 10, 25, 5] 元リスト durations: [25, 10, 25, 5] 戻り値 result: [5, 10, 25, 25] result is durations: False 元リストの順序はそのままで、新しいリストが返ります。 「新しいリスト」は入れ子まで完全に複製するという意味ではありません。 【問2】result = durations.sort() 毎回、新しい入力 [25, 10, 25, 5] から始めます。 元リスト durations: [5, 10, 25, 25] 戻り値 result: None 元のリスト自体が変わります。sort()は並べ替えたリストを返しません。 Noneだけを見て「処理に失敗した」と決めないでください。 【問3】durations = durations.sort() を直す 意図的な失敗例: 代入後の変数 durations は None になります。 この代入自体は例外を発生させません。右辺で元のリストが並べ替えられ、 その戻り値 None が左辺の変数へ代入されます。 観察用の別名 original_alias が指す元のリスト: [5, 10, 25, 25] 修正A: 受付順を残したい durations = [25, 10, 25, 5] ordered = sorted(durations) durations: [25, 10, 25, 5] ordered: [5, 10, 25, 25] 修正B: 元順を残す必要がない durations = [25, 10, 25, 5] durations.sort() durations: [5, 10, 25, 25] 失敗後の None をそのまま修正例に渡さず、新しい入力からやり直します。 sort()を使ってはいけないのではなく、必要な元順と戻り値で選びます。 【問4】受付順を残して、所要時間の短い順の別一覧を作る ordered = sorted(jobs, key=lambda item: item[1]) 元のjobs: [('R1', 25), ('R2', 10), ('R3', 25), ('R4', 5)] ordered: [('R4', 5), ('R2', 10), ('R1', 25), ('R3', 25)] 元のID順: R1 → R2 → R3 → R4 結果ID順: R4 → R2 → R1 → R3 item[1]はタプルの2番目、所要時間です。25分はR1 → R3を保ちます。 【問5】reverse=True と昇順結果の全体反転 昇順: R4 → R2 → R1 → R3 sorted(..., reverse=True): R1 → R3 → R2 → R4 list(reversed(昇順結果)): R3 → R1 → R2 → R4 降順でも同じキーの相対順は保たれます。25分はR1 → R3のままです。 昇順結果を全体反転すると、同じキー同士も反転します。 「IDの小さい順だからR1が先」と説明するのは不十分です。 追加確認用: [('Z9', 25), ('A1', 25), ('X4', 5), ('B2', 25), ('C3', 10)] 所要時間だけをキーにした昇順: X4 → C3 → Z9 → A1 → B2 同じキーのZ9 → A1 → B2は、入力内での順序を保ちます。 この追加確認はテストに含みます。主問題の6問には数えません。 【問6】独立した空リストを2方式へ渡す sorted([]): 元リスト [] / 戻り値 [] / 戻り値は新しいリスト [].sort(): 元リスト [] / 戻り値 None 値が空でも、戻り値が同じになるわけではありません。 【英語2文の完成例】 I used sorted() to keep the original order. Items with the same duration keep their relative order. 採点するポイント: - 受付順を残すのは元のjobsで、別一覧orderedは所要時間順になる - 同じ所要時間の中で保たれるのは入力内の相対順 - 元順を残す必要があるためsorted()を選んだと説明できる 初回は日本語の説明と、対応する公式仕様の短い語句の指摘でも構いません。 【任意の検証問題】 編集部が作成した架空のAI説明: sort returns the sorted list 誤りはreturns the sorted list。list.sort()の戻り値はNoneです。 特定のAIモデルが実際に誤答した記録ではありません。 【公式資料】 Python Sorting HOWTO: Sorting Basics https://docs.python.org/3/howto/sorting.html#sorting-basics Python list.sort https://docs.python.org/3/library/stdtypes.html#list.sort Python sorted https://docs.python.org/3/library/functions.html#sorted Python Sorting HOWTO: Sort Stability and Complex Sorts https://docs.python.org/3/howto/sorting.html#sort-stability-and-complex-sorts 本教材の「元順が残る」の説明は、単純な数値・文字列を含むデータと、 入力を書き換えないkeyを前提にしています。制作時はPython 3.12.14で15テストを実行しました。