用語比較
タプルのパックとシーケンスのアンパックの違い|x, y, z = t の動きをPython3エンジニア認定基礎試験で判断する
タプルのパックとシーケンスのアンパックは向きが逆の操作で、t = 12345, 54321, 'hello!' は複数の値を1つのタプルにまとめるパック、x, y, z = t はタプルの中身を複数の変数へ取り出すアンパックです。
等号のどちら側に複数のものが並ぶかで見分けます。a, b = 1, 2 のような複数同時の代入は、この2つを組み合わせたものです。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
タプルのパックとシーケンスのアンパックの要点
タプルのパック
複数の値を1つのタプルにまとめる操作。t = 12345, 54321, 'hello!' では、3つの値が1つのタプルにパックされる。
シーケンスのアンパック
シーケンスの要素を複数の変数へ取り出す逆の操作。x, y, z = t のように書き、右辺には全てのシーケンス型を使える。
違いを表で確認
| 比較軸 | タプルのパック | シーケンスのアンパック |
|---|---|---|
| 公式チュートリアルでの呼び名 | タプルのパック (tuple packing) | シーケンスのアンパック (sequence unpacking) |
| 書き方の例 | t = 12345, 54321, 'hello!' | x, y, z = t |
| 複数のものが並ぶ側 | 等号の右辺に値が並び、1つのタプルになる | 等号の左辺に変数が並び、右辺の要素が1つずつ入る |
| 個数の条件 | 特になし(値の数だけの要素を持つタプルができる) | 左辺の変数の数が、右辺のシーケンスの長さと同じ数である必要がある |
| 右辺に使えるもの | 任意の値の並び | 全てのシーケンス型 |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
a, b = 1, 2 を「2つの変数に別々に代入している」としか理解していない初学者
公式チュートリアルによると、この複数同時の代入は、右辺 1, 2 がタプルにパックされ、そのタプルが左辺の a と b へアンパックされる組み合わせです。等号の両側にそれぞれの操作が1回ずつ現れています。
アンパックで変数の数が合わずに迷う再受験者
アンパックでは、等号の左辺に並べる変数の数が右辺のシーケンスの長さと同じである必要があります。3要素のタプルを2つの変数で受けようとする設問では、条件を満たしていない点に気づくことが判断の入口になります。
アンパックはタプルにしか使えないと思っている人
公式チュートリアルは、右辺には全てのシーケンス型を使えると説明しています。タプルだけでなく、リストなどのシーケンスでも同じ書き方で要素を取り出せます。
問題文から答えを選ぶ手順
- 1
等号の左辺を見る
左辺にカンマ区切りで変数が並んでいれば、右辺の要素を取り出すシーケンスのアンパックです。
- 2
等号の右辺を見る
右辺にカンマ区切りで値が並び、左辺が変数1つなら、値が1つのタプルにまとまるタプルのパックです。
- 3
両辺にカンマ区切りが並ぶ場合は両方が起きていると読む
a, b = 1, 2 のような複数同時の代入は、右辺でパック、左辺でアンパックが行われている組み合わせです。
- 4
アンパックでは個数を数える
左辺の変数の数と右辺のシーケンスの長さが同じか確かめます。違えば公式チュートリアルの条件を満たしません。
試験での見分け方
- 1複数の値を1つのタプルにまとめる操作が、タプルのパック。
- 2シーケンスの要素を複数の変数へ取り出す操作が、シーケンスのアンパック。
- 3アンパックでは、左辺の変数の数が右辺のシーケンスの長さと同じである必要がある。
- 4複数同時の代入は、タプルのパックとシーケンスのアンパックの組み合わせである。
誤答しやすい選択肢
パックとアンパックを同じ操作の言い換えとして覚える
修正: パックは値をタプルにまとめる操作、アンパックはシーケンスの要素を変数へ取り出す逆の操作です。等号のどちら側に複数のものが並ぶかで見分けます。
左辺の変数の数を右辺の長さと合わせずに書く
修正: アンパックでは、左辺の変数の数が右辺のシーケンスの長さと同じである必要があります。要素の数を数えてから変数を並べます。
アンパックの右辺をタプルだけと考える
修正: 右辺には全てのシーケンス型を使えます。リストを右辺に置いても同じ書き方で取り出せます。
確認問題
Q1t = 12345, 54321, 'hello!' は、公式チュートリアルでは何の例とされている?
答え: タプルのパック
値 12345、54321、'hello!' が1つのタプルにパックされるため、タプルのパック (tuple packing) の例です。
Q2t が3要素のタプルのとき、x, y, z = t の x, y, z にはそれぞれ何が入る?
答え: t の1番目、2番目、3番目の要素が順に入る
シーケンスのアンパックでは、左辺の変数に右辺のシーケンスの要素が先頭から1つずつ入ります。変数の数は要素の数と同じ3つです。
Q3a, b = 1, 2 は、パックとアンパックのどちらの操作か?
答え: 両方(右辺でパック、左辺でアンパック)
公式チュートリアルは、複数同時の代入がタプルのパックとシーケンスのアンパックを組み合わせたものに過ぎないと説明しています。
到達チェック
- タプルのパックを、複数の値を1つのタプルにまとめる操作と説明できる
- シーケンスのアンパックを、要素を複数の変数へ取り出す操作と説明できる
- アンパックでは左辺の変数の数が右辺の長さと同じである必要があると言える
- 複数同時の代入がパックとアンパックの組み合わせだと説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- 辞書の pop() と popitem() の違い|キー指定か末尾か(Python3基礎)
辞書の pop() は指定したキーの値を取り出し、popitem() は最後に追加された(キー, 値)の組を取り出します。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
- 集合の | & - ^ の違い|和・積・差・対称差をPython3エンジニア認定基礎試験で判断する
集合(set)の演算子 |(和)、&(積)、-(差)、^(対称差)の違いを、公式チュートリアルの例(abracadabraとalacazam)、結果の求め方、確認問題まで解説します。
- split()と join() の違い|文字列を分ける・つなぐ(Python3基礎)
文字列の split() は区切って文字列のリストにし、join() は文字列のリストを1つの文字列につなぎます。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
よくある質問
Qタプルのパックとは何ですか?
複数の値を1つのタプルにまとめる操作です。公式チュートリアルでは t = 12345, 54321, 'hello!' を例にしています。
Qシーケンスのアンパックとは何ですか?
シーケンスの要素を複数の変数へ取り出す、パックの逆の操作です。x, y, z = t のように書きます。
Qアンパックで左辺の変数の数は自由に決められますか?
いいえ。公式チュートリアルは、左辺の変数の数が右辺のシーケンスの長さと同じ数であることを要求しています。
Qa, b = 1, 2 ではパックとアンパックのどちらが行われますか?
両方です。公式チュートリアルによると、複数同時の代入はタプルのパックとシーケンスのアンパックを組み合わせたものです。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
