カテゴリー

  • プログラミング
  • 英語学習
  • 海外
  • キャリア
  • Kredo
Kredoオンラインキャンプ
KredoIT留学
無料カウンセリングはこちら
Kredoオンラインキャンプ体験談
KredoIT留学体験談
外貨を稼ぐ!海外フリーランス無料セミナー
未経験から即戦力ITグローバル人材 無料セミナー
Kredo Blog 英語・IT・AIで、人生の選択肢を広げる。
無料ウェビナー参加 ↗ 無料カウンセリング予約無料相談↗
MENU
EXPLORE KREDO BLOG

知りたいことから、世界が広がる。

ブログTOP ↗
留学・セブSTUDY & LIFE
留学・セブの記事をすべて読む ↗ 海外留学→海外移住→海外就職→
英語学習ENGLISH
英語学習の記事をすべて読む ↗ 英語学習法→英語フレーズ→
IT・AITECH & CREATIVITY
IT・AIの記事をすべて読む ↗ プログラミング学習→プログラミング知識→AI・テクノロジー→デザイン→
キャリアYOUR NEXT CHAPTER
キャリアの記事をすべて読む ↗ 転職情報→キャリアデザイン→
KredoOUR SCHOOL
Kredoの記事をすべて読む ↗ ニュース・キャンペーン→セブ島情報→インタビュー→
STUDENT DIARIES留学生のリアルな日記noteの体験記を読む ↗YouTube・Instagramで留学を知る ↗
記事を探す ブログTOP
留学・セブ
STUDY & LIFEセブで学ぶ。海外で暮らす。留学の準備から、現地の毎日まで。
留学・セブを知るすべての記事 ↗
海外留学費用・期間・学校選びを知る↗海外移住海外で暮らすためのヒント↗海外就職世界で働く選択肢を探す↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
英語学習
ENGLISH英語が、世界を近くする。学び方と、今日から使える英語。
英語学習を知るすべての記事 ↗
英語学習法自分に合った学び方を見つける↗英語フレーズ会話で使える表現を読む↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
IT・AI
TECH & CREATIVITYつくる力を、次の一歩に。プログラミングとAIをもっと身近に。
IT・AIを知るすべての記事 ↗
プログラミング学習はじめ方・学び方を知る↗プログラミング知識仕組みやスキルを深める↗AI・テクノロジーAIの活かし方と最新の話題↗デザイン伝わるものづくりのヒント↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
キャリア
YOUR NEXT CHAPTER学びの先の、働き方。転職・海外就職・これからのキャリア。
キャリアを知るすべての記事 ↗
転職情報次の仕事へ向かう準備↗キャリアデザイン自分らしい働き方を考える↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
Kredo
OUR SCHOOLKredoを、もっと知る。学校のこと、セブのこと、学ぶ人のこと。
Kredoを知るすべての記事 ↗
ニュース・キャンペーンKredoからのお知らせ↗セブ島情報現地の暮らしを知る↗インタビュー受講生・卒業生の声を読む↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
留学日記 ↗

ENGLISH · IT · AI / STUDY IN CEBU

学ぶって、冒険だ。

英語・IT・AIで、人生の選択肢を広げよう。

留学の無料相談へ ↗Kredo Blogを読む →
JAPAN✈CEBU
Kredoで、講師と一緒に英語とITを学ぶ受講生
LEARN SOMETHING NEW.
セブの海を望む場所で学ぶ日常
HELLO, NEW WORLD.
  • TOP
  • プログラミング
  • Web・プログラミング(学習)
  • Pythonのsortとsortedの違い|英語の公式仕様で元データ・戻り値を確認

Pythonのsortとsortedの違い|英語の公式仕様で元データ・戻り値を確認

アバター画像
Kredo編集部
公開日:2026.10.08
更新日:2026.10.08
Web・プログラミング(学習) |
sort()は元のリストを並べ替えて戻り値がNone、sorted()は元のデータを残して新しいリストを返す比較図

元のリストを並べ替えるのが list.sort()、並べ替えた新しいリストを返すのが sorted() です。 sort() の戻り値は None。result = data.sort() と書いても、result に並べ替え済みのリストは入りません。

この違いは、受付順を残して「所要時間順の一覧」を別に作るときに重要です。本記事では架空の提出物を使い、元データ・戻り値・同じ時間の項目の順序を6問で確かめます。英語の公式仕様は、実行結果を説明するために必要な短い箇所だけ読みます。

対象は、Pythonのリスト・代入・print() を一度使った方です。学習時間の目安は25〜35分です(編集上の目安で、学習実測ではありません)。Python環境がなくても、紙に結果を予想して解答と比べられます。

記事のもくじ

  • sortとsortedの違いは、元データと戻り値で見る
  • 公式英語を、実行前の予想に結び付ける
    • 問1:sortedの結果を別の変数に入れる
    • 問2:sortの結果を別の変数に入れる
    • 問3:durations = durations.sort() を直す
  • 受付順を残して、所要時間順の別一覧を作る
    • 元順を残すなら、どちらを選ぶ?
  • stableは「同じキーの項目の順序」で確かめる
    • reverse=Trueなら、同じ25分の2件も逆になる?
  • 空リストでも、戻り値まで確かめる
    • 問6:空ならsortとsortedは同じ結果になる?
  • 選択理由を2文で残し、別の入力でも確かめる
  • 6問の教材と実行方法
  • 出典・検証環境と、次に学ぶ内容

sortとsortedの違いは、元データと戻り値で見る

リストを入力した場合の違い
観察すること data.sort() sorted(data)
元のリスト そのリスト自体を並べ替える 元の並びを保つ
戻り値 None 並べ替えた新しいリスト
同じキーの項目 元の相対順を保つ 元の相対順を保つ
使う場面 元の順序が不要なとき 元の順序と並べ替えた順序の両方が必要なとき

ここでの「元の並びを保つ」は、この教材の数値やタプルと、データを書き換えない key 関数を使う場合の説明です。sorted() が新しいリストを作ることは、入れ子のオブジェクトまで丸ごと複製するという意味ではありません。

同じ入力25、10、25、5を2通りで処理。sortedでは元リストを保ち戻り値が5、10、25、25。sortでは元リストが5、10、25、25になり戻り値はNone。
図1:並べ替え後の「元リスト」と「戻り値」を、別々に観察します。 図を拡大して見る

sort() はリストのメソッドです。sorted() はタプルなどの反復可能なオブジェクトも受け取れますが、返すのはリストです。本記事は両者を比べやすいよう、入力をリストにそろえます。

公式英語を、実行前の予想に結び付ける

読む順番は「予想する→実行する→仕様のどの語と一致したか確認する」です。英文全体を訳す前に、次の3点へ線を引くつもりで読みましょう。

  • Sorting Basics の in-place:対象のリストそのものを変更する。
  • 同じ節の returns None:呼び出しの戻り値は None。並べ替え後のリストとは別に考える。
  • sorted() の仕様の new sorted list:並べ替えた新しいリストを返す。

None は「ここにはリストなどの結果が返されていない」ことを表す値です。空リスト [] や文字列 "None" とは別物です。このメソッドで None が返ったこと自体は、失敗を示しません。

全問、入力を最初から作り直してください。 前の問で変更した変数をそのまま使うと、「元の順番」の観察ができなくなります。下のコードは各問を単独で実行できます。

問1:sortedの結果を別の変数に入れる

2つの print() は何を表示しますか。「元のリスト」と「戻り値」を分けて書いてから実行しましょう。

durations = [25, 10, 25, 5]
result = sorted(durations)
print("original:", durations)
print("return:", result)
問1の解答と仕様の照合
original: [25, 10, 25, 5]
return: [5, 10, 25, 25]

元の durations は受付順のままで、新しいリストが result に入ります。仕様の new sorted list と一致するのは戻り値のほうです。元順も表示したい画面や、後から受付順に戻したい処理に向いています。

問2:sortの結果を別の変数に入れる

入力は問1と同じです。変更したのは2行目だけですが、2つの観察結果はどう変わるでしょうか。

durations = [25, 10, 25, 5]
result = durations.sort()
print("original:", durations)
print("return:", result)
問2の解答と仕様の照合
original: [5, 10, 25, 25]
return: None

durations 自体が並べ替わる点が in-place、result が None になる点が returns None に対応します。処理は成功しています。result だけを見て「並べ替えに失敗した」と判断しないことが大切です。

list.sort() の公式仕様でも、変更は元のリストへ作用し、並べ替えたリストを戻り値として返さないことを確認できます。

問1と問2の実行結果は、それぞれの解答欄に掲載しています。元のリストと戻り値を別々に照合してください。

問3:durations = durations.sort() を直す

次は、よくある取り違えを再現したコードです。実行後の durations を予想し、「受付順を残す」「残さなくてよい」の2つの要件ごとに直してください。

durations = [25, 10, 25, 5]
durations = durations.sort()
print(durations)
問3の解答と、要件ごとの直し方

出力は None です。代入では右辺が先に評価されるため、まずリストを並べ替え、その戻り値の None を左辺の名前 durations に代入します。この1行だけでは例外は出ません。

受付順を残すなら、初期値からやり直して、別名へ受け取ります。

durations = [25, 10, 25, 5]
ordered = sorted(durations)
print(durations)  # [25, 10, 25, 5]
print(ordered)    # [5, 10, 25, 25]

受付順を残す必要がないなら、代入せずに呼び出します。

durations = [25, 10, 25, 5]
durations.sort()
print(durations)  # [5, 10, 25, 25]

すでに durations が None になった後で sorted(durations) に変えても直りません。None は並べ替えの入力にできないためです。初期データを作り直すところまでが修正です。

受付順を残して、所要時間順の別一覧を作る

ここからは、架空の提出物4件を使います。タプルの1番目が受付ID、2番目が所要時間(分)です。R1 と R3 はどちらも25分ですが、別の提出物です。

jobs = [('R1', 25), ('R2', 10), ('R3', 25), ('R4', 5)]

key=lambda item: item[1] は「各項目の2番目の値を取り出し、それを比較に使う」という指定です。Pythonの添字は0から始まるため、item[1] が分数になります。ここでID順を追加条件にはしていません。

元順を残すなら、どちらを選ぶ?

要件は「受付順の jobs を残し、短い時間から並べた ordered も作る」です。sort() と sorted() のどちらを使いますか。jobs と ordered のID順を両方予想してください。

jobs = [('R1', 25), ('R2', 10), ('R3', 25), ('R4', 5)]
ordered = sorted(jobs, key=lambda item: item[1])
print("original:", jobs)
print("ordered:", ordered)
問4の解答と仕様の照合
original: [('R1', 25), ('R2', 10), ('R3', 25), ('R4', 5)]
ordered: [('R4', 5), ('R2', 10), ('R1', 25), ('R3', 25)]

この要件では sorted() を選びます。ID順は、元の一覧が R1→R2→R3→R4、並べ替えた一覧が R4→R2→R1→R3 です。同じ25分の項目は、受付時と同じ R1→R3 の順になっています。

これはIDが小さい順に整列したからではありません。次の節で、同じキーの順序についての仕様を確認します。

stableは「同じキーの項目の順序」で確かめる

Pythonの sort() と sorted() は、どちらも安定したソートです。公式資料の安定性の節にある stable は、同じ比較キーを持つ項目の相対順を保つ、という意味です。

「全項目が元の場所にとどまる」という意味ではありません。R1とR3は一覧の後ろへ移っても、R1が先、R3が後という関係を保ちます。キーは今回、項目全体でもIDでもなく「所要時間」です。

入力はR1、R2、R3、R4。時間の昇順はR4、R2、R1、R3、降順はR1、R3、R2、R4。どちらも同じ25分のR1がR3より先に並ぶ。
図2:25分の2件に注目すると、昇順でも降順でも相対順が保たれることを確認できます。 図を拡大して見る

reverse=Trueなら、同じ25分の2件も逆になる?

受付順の入力から、所要時間の長い順に並べます。R1とR3の前後関係も逆になるでしょうか。先にID順を書いてから実行してください。

jobs = [('R1', 25), ('R2', 10), ('R3', 25), ('R4', 5)]
ordered = sorted(jobs, key=lambda item: item[1], reverse=True)
print("original:", jobs)
print("ordered:", ordered)
問5の解答と、一覧を逆転する操作との違い
original: [('R1', 25), ('R2', 10), ('R3', 25), ('R4', 5)]
ordered: [('R1', 25), ('R3', 25), ('R2', 10), ('R4', 5)]

ID順は R1→R3→R2→R4 です。降順でも安定性が保たれるため、同じ25分の R1→R3 は変わりません。公式資料の Odds and Endsでも、reverse を指定した場合の安定性を確認できます。

一方、昇順の一覧を作ってから全体を逆転すると、同じ25分の2件も入れ替わります。

jobs = [('R1', 25), ('R2', 10), ('R3', 25), ('R4', 5)]
ascending = sorted(jobs, key=lambda item: item[1])
flipped = list(reversed(ascending))
print(flipped)
# [('R3', 25), ('R1', 25), ('R2', 10), ('R4', 5)]

reverse=True は「降順にソートする指定」、reversed() は「今の並びを後ろからたどる操作」です。同じキーがあると、結果の違いが見えます。

空リストでも、戻り値まで確かめる

問6:空ならsortとsortedは同じ結果になる?

次の4行の出力を予想してください。空のため並び順は変わりませんが、「元のリスト」と「戻り値」を分ける習慣は同じです。

first = []
from_sorted = sorted(first)
second = []
from_sort = second.sort()
print("sorted original:", first)
print("sorted return:", from_sorted)
print("sort original:", second)
print("sort return:", from_sort)
問6の解答と仕様の照合
sorted original: []
sorted return: []
sort original: []
sort return: None

元のリストはどちらも [] です。ただし、sorted() は新しい空リストを返し、sort() は None を返します。入力が空でも、それぞれの戻り値の仕様は変わりません。

選択理由を2文で残し、別の入力でも確かめる

問4で選んだ処理を、元順と同順位の2点に絞って説明してみましょう。次は編集部作成の説明例です。英文の暗記より、コードの動作と一致することを優先します。

I used sorted() to keep the original order. Items with the same duration keep their relative order.

「元の順序を残すために sorted() を使いました。同じ所要時間の項目は、互いの前後関係を保ちます」という意味です。初回は日本語で説明し、対応する仕様の短句を指すだけでも構いません。

仕上げに、入力を [('B', 8), ('A', 8), ('C', 3)] へ変更してみてください。同じ8分がB→Aの順なので、昇順は C→B→A、降順は B→A→C です。A→Bに並べ直されると予想したなら、「安定性」を「ID順」と取り違えていないか見直しましょう。

任意の確認:編集部が検証用に作った架空の説明 “sort returns the sorted list” は、どこが仕様と違うでしょうか。実際のAIサービスの回答を引用したものではありません。問2の戻り値と公式資料を根拠に、“sort() returns None.” と直せれば十分です。AIの登録・利用は必要ありません。

学習の確認点:①元のリストと戻り値を分けて予想できる、②元順を残す要件で sorted() を選べる、③同じキーの順序が降順でも保たれると説明できる。この3点を、実行結果と公式仕様の両方で確かめてください。

6問の教材と実行方法

Python実習セットをダウンロード(ZIP)すると、6問のコード、解答、予測・記録用PDF、実行手順、確認用テストをまとめて利用できます。実習用の exercise.py は標準ライブラリのみで動き、外部通信やデータファイルへの書き込みを行いません。

  • 予測・実行ワークシート(PDF):問題ページに予想を書き、実行後に結果を記録します。後半に解答があります。
  • 6問の解答と仕様リンク(TXT):表示結果と、仕様の対応を確認できます。

ZIPを展開し、exercise.py があるフォルダーで次を実行します。コマンド名は環境によって異なります。WindowsのPythonランチャーを使う場合は、先頭の python3 を py に置き換えてください。

python3 --version
python3 -B exercise.py --case 1
python3 -B exercise.py --case all

最初は問1だけを予想してから実行し、答え合わせが終わってから次の問へ進むと、結果を先に見ずに練習できます。全問の動作を確かめるテストは python3 -B -m unittest -v で実行できます。

出典・検証環境と、次に学ぶ内容

参照日は2026年10月8日です。参照した英語公式ページの表示版は Python 3.14.8、制作時のコード実行環境は Python 3.12.14 です。資料の表示版と実行版を分けて記載しています。公式の /3/ ページは更新されるため、読んだ時点で版も確認してください。

  • Python公式:Sorting Basics(元のリストと戻り値)
  • Python公式:list.sort()(その場での変更・安定性)
  • Python公式:sorted()(新しいリスト・key・reverse)
  • Python公式:Sort Stability and Complex Sorts(同じキーの相対順)
  • Python公式:Odds and Ends(降順でも保たれる安定性)

本記事の入力データ・問題・説明例は学習用の架空例です。実在の受講生や業務データは使っていません。混在する型やNaN、比較処理の例外、速度比較、多段ソートは今回の練習範囲に含めていません。

基本文法をまとめて練習したい方は、Python問題集と練習問題10問へ。問題8では sorted() と条件による絞り込みを扱っています。仕様ページの探し方から確認したい方には、英語の公式ドキュメントを読む5手順が役立ちます。別の処理を動かして学ぶ場合は、Pythonサンプルコード20選も参考にしてください。

英語でIT・AIを学べるKredo

英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?

当メディアを運営しているKredoは、英語×ITをオンラインで学ぶ「Kredoオンラインキャンプ」と、フィリピンのセブ島で英語とIT・AIを学ぶ「KredoIT留学」「KredoAI留学」を提供しています。これまでの卒業生は3,000名以上。卒業生の多くが、国内外のIT企業への転職、フリーランスなどへのキャリアチェンジを実現しています。これからの時代に必要な英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?

\ セブ島でIT×英語を学ぶ /IT留学の無料カウンセリングを予約する
\ オンラインでIT✕英語を学ぶ / Kredoオンラインキャンプの詳細をみる >>
  • ツイート
  • シェア
  • はてな
  • ポケット
この記事を書いた人
アバター画像
Kredo編集部

Kredo編集部です!プログラミング、英語学習、キャリア、Kredo情報を発信していきます。

関連記事

  • 机の上で色分けした注文カードと明細カードを並べ、結合後のカードを見比べる学習イメージ
    Web・プログラミング(学習)

    SQLのJOINで行数・合計が増える原因は?1対多と直し方を図解

  • 追加した項目の動きをノートで整理する学習者の写真イメージ
    プログラミング Web・プログラミング(学習)

    JavaScriptのイベント委譲とは?追加したボタンが動く仕組みを実験

    2026.10.06
  • フォームの入力条件をノートで整理する学習者の写真イメージ
    プログラミング Web・プログラミング(学習)

    フォームの入力チェックの作り方|HTMLとJavaScriptで空白・文字数を確認

  • fetchのエラーをノートとパソコンで調べる学習者の写真イメージ
    プログラミング Web・プログラミング(学習)

    JavaScriptのfetchエラーの調べ方|404・JSON・通信失敗を切り分ける

新規CTA
KREDO JAPAN株式会社

\ SNSで留学の様子を更新中! /

  • Instagram
  • LINE
  • X
  • YouTube
©KREDO JAPAN Inc. 2024 All rights reserved.
Kredoのサービス
セブ島で学びたい方はこちら KredoIT留学
自宅で学びたい方はこちら Kredo Online 英語×アプリ開発コース
運営会社 会社概要 採用情報 お問い合わせ
利用規約 プライバシーポリシー 特定商品取引に基づく表示 資料請求