1. 2組が2つの文字列になる
  2. 1組のときは1つの文字列だけ返る
  3. 空リストのときは空リストが返る
  4. 0円の組も同じ形式で扱える
  5. 組の順番はそのまま保たれる
コース一覧
Python入門:基礎文法編
タプルアンパック

Python入門:基礎文法編

変数、条件分岐、ループ、関数、リスト・辞書、ファイル操作など Python の基礎文法を、ブラウザ上で毎レッスン実際にコードを書き、自分だけの「おこづかい帳アプリ」を育てながら学べる無料コースです。プログラミング完全未経験から始められ、環境構築や事前知識は一切不要です。約 18 時間 (1 日 30 分 × 37 日) で 74 レッスンを修了でき、修了後は入力・集計・ファイル保存まで備えたスクリプトを1から書けるようになります。

1
はじめての Python
01. printで表示15分
02. 文字列の連結15分
03. 四則演算15分
04. 実行順序15分
05. コメント15分
06. エラーを読んでみる15分
07. つくる:レシート表示15分
08. 第1章クイズ10分
2
変数とデータ型
01. 変数15分
02. typeで型を調べる15分
03. 数値への変換15分
04. 文字列への変換15分
05. boolとNone15分
06. f-string15分
07. 入力を受け取る15分
08. つくる:入力できるおこづかい帳15分
09. 第2章クイズ10分
3
演算子と式
01. 比較演算子15分
02. 論理演算子15分
03. in演算子15分
04. 剰余と切り捨て除算15分
05. 連鎖比較と優先順位15分
06. 三項演算子15分
07. つくる:予算チェック15分
08. 第3章クイズ10分
4
条件分岐
01. if文の基本15分
02. if / elif / else15分
03. 条件の組み合わせ15分
04. match文15分
05. 定番:FizzBuzz判定15分
06. デフォルト値とor15分
07. つくる:カテゴリ自動判定15分
08. 第4章クイズ10分
5
ループ
01. forで合計15分
02. whileで繰り返す15分
03. rangeとstep15分
04. breakとcontinue15分
05. enumerateで番号付け15分
06. zipで組み合わせ15分
07. 入れ子ループ15分
08. つくる:何件でも記録15分
09. 第5章クイズ10分
6
関数
01. 関数を定義する15分
02. 引数と戻り値15分
03. デフォルト引数15分
04. キーワード引数15分
05. 複数の戻り値15分
06. divmod15分
07. 変数のスコープ15分
08. lambda関数15分
09. つくる:関数に分割15分
10. 第6章クイズ10分
7
リストと辞書
01. リストの追加と削除15分
02. スライス15分
03. 辞書の基本15分
04. 辞書を走査15分
05. keyでソート15分
06. setで重複除去15分
07. リスト内包表記15分
08. タプルアンパック15分
09. つくる:カテゴリ別集計15分
10. 第7章クイズ10分
8
ファイルとエラー処理
01. ファイルを読み込む15分
02. ファイルに書き込む15分
03. withで安全に扱う15分
04. CSV形式で保存15分
05. try-exceptで備える15分
06. 例外の種類15分
07. つくる:保存機能15分
08. 第8章クイズ10分
9
総合制作
01. 全機能を統合しよう15分
02. 月間レポート機能15分
03. 自由拡張15分
04. 完成と次のステップ10分

タプルアンパック

リストとタプル

pair[0] と pair[1] では、何が入っているのか分からない

2 つの値をひとまとめに持ち運びたいとき、丸かっこで並べた形が使えます。これが タプル です。

Python

point = (10, 20) print(point[0]) print(point[1])

10 と 20 が出ます。番号で取り出せるところはリストと同じですが、point[0] = 30 のように書き換えることはできず、TypeError になります。作ったら変えない、という約束が型として表れています。

とはいえ、番号で取り出すコードは読み返したときに何番が何なのか分かりません。タプルの本当の便利さは、変数に分けて受け取れる ところにあります。

Python

x, y = point

左辺にカンマで変数を 2 つ並べると、x に 10、y に 20 が入ります。これを アンパック と呼びます。名前が付くので、以降のコードが読めるものになります。第 6 章で作った 2 つの値を返す関数を total, average = ... と受け取れたのも、同じ仕組みでした。

1 周ごとに [0] と [1] を書き続けたくない

組が並んだリストを回すとき、for の変数を 2 つ書けば、1 周ごとに自動でアンパックされます。

Python

sizes = [("S", 1), ("M", 2), ("L", 3)] for label, number in sizes: print(label, number)

S 1、M 2、L 3 と出ます。前に使った enumerate や items() も、返していたのは「2 つの値の組」でした。同じ仕組みが名前を変えて何度も出てきているだけです。

アンパックはリストにも効きます。["S", 1] のような 2 要素のリストでも同じように分解できます。分解できるかどうかは、タプルかリストかではなく 要素の数が合っているか で決まります。

数が合わないと ValueError になり、メッセージに unpack という単語が出ます。この単語を見たら、受け取る変数の数と組の中身の数を数え直します。

やってみよう

関数 unpack_pairs(pairs) を実装してください。pairs は ["品名", 金額] という 2 要素の組が並んだリストです。1 組ずつアンパックして受け取り、"品名 金額円" という文字列を作り、それを集めた リスト を return します。

for の変数を 2 つ書く形で分解してください。品名と金額の間は半角スペース 1 つ、金額のうしろに 円 を付けます。金額は int ですが、f-string の中に書けば str() は要りません。

戻り値はタプルではなくリストです。この学習環境の判定はリスト形式で行うためで、手元で試すときはタプルのままでも構いません。空リストのときは空リスト [] を返します。

要件

  1. 関数名は unpack_pairs で、引数は pairs の1つ
  2. for name, price in pairs の形でアンパックして受け取る
  3. 1組ごとに "品名 金額円" の文字列を作る。品名と金額の間は半角スペース1つ
  4. 文字列を集めたリストを return する。並び順は元のままにする

入出力例

unpack_pairs([["りんご",120],["バス代",220]]) → ["りんご 120円","バス代 220円"] unpack_pairs([["映画",1800]]) → ["映画 1800円"] unpack_pairs([]) → [] unpack_pairs([["試供品",0],["ノート",200]]) → ["試供品 0円","ノート 200円"] unpack_pairs([["電車代",320],["牛乳",180],["ペン",150]]) → ["電車代 320円","牛乳 180円","ペン 150円"]

ヒント

for name, price in pairs: と書けば1周ごとに2つの変数に分かれます

1行は f"{name} {price}円" で作れます

作った文字列は append でリストにためて、最後にそのリストを返します

戻り値はタプルではなくリストです

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

関連レッスン

  • つくる:カテゴリ別集計

    第7章の総仕上げ。支出をカテゴリごとに合計した辞書を返す total_by_category を作る

  • 第7章クイズ

    リストのメソッド、スライス、辞書のキー、set、内包表記の理解を5問で確認する

  • ファイルを読み込む

    open と read でテキストファイルを読み込み、splitlines で行のリストに変える

  • 全機能を統合しよう

    各章で作った部品を1本にまとめ、コマンド列を順に処理する run_kakeibo を作る

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • タプル順序付きで変更不可のシーケンス
  • リスト順序付きで複数の値を扱うデータ構造
  • 変数データに名前をつけて参照する仕組み
  • 関数処理に名前を付けて再利用できる単位
  • f-stringf"..." で変数を埋め込む文字列記法
  • 戻り値呼び出し元への返答を表す点線矢印
  • 引数位置引数=順番で渡す。
main.py
学習モード
エディタを読み込んでいます

メモ

タプルアンパック

⌘S で保存