AI資格ドリル
資格を選ぶ

用語比較

タプルのパックとシーケンスのアンパックの違い|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

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

a, b = 1, 2 を「2つの変数に別々に代入している」としか理解していない初学者

公式チュートリアルによると、この複数同時の代入は、右辺 1, 2 がタプルにパックされ、そのタプルが左辺の a と b へアンパックされる組み合わせです。等号の両側にそれぞれの操作が1回ずつ現れています。

02

アンパックで変数の数が合わずに迷う再受験者

アンパックでは、等号の左辺に並べる変数の数が右辺のシーケンスの長さと同じである必要があります。3要素のタプルを2つの変数で受けようとする設問では、条件を満たしていない点に気づくことが判断の入口になります。

03

アンパックはタプルにしか使えないと思っている人

公式チュートリアルは、右辺には全てのシーケンス型を使えると説明しています。タプルだけでなく、リストなどのシーケンスでも同じ書き方で要素を取り出せます。

問題文から答えを選ぶ手順

  1. 1

    等号の左辺を見る

    左辺にカンマ区切りで変数が並んでいれば、右辺の要素を取り出すシーケンスのアンパックです。

  2. 2

    等号の右辺を見る

    右辺にカンマ区切りで値が並び、左辺が変数1つなら、値が1つのタプルにまとまるタプルのパックです。

  3. 3

    両辺にカンマ区切りが並ぶ場合は両方が起きていると読む

    a, b = 1, 2 のような複数同時の代入は、右辺でパック、左辺でアンパックが行われている組み合わせです。

  4. 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つのタプルにまとめる操作と説明できる
  • シーケンスのアンパックを、要素を複数の変数へ取り出す操作と説明できる
  • アンパックでは左辺の変数の数が右辺の長さと同じである必要があると言える
  • 複数同時の代入がパックとアンパックの組み合わせだと説明できる

同じ資格で次に知りたいこと

よくある質問

Qタプルのパックとは何ですか?

A

複数の値を1つのタプルにまとめる操作です。公式チュートリアルでは t = 12345, 54321, 'hello!' を例にしています。

Qシーケンスのアンパックとは何ですか?

A

シーケンスの要素を複数の変数へ取り出す、パックの逆の操作です。x, y, z = t のように書きます。

Qアンパックで左辺の変数の数は自由に決められますか?

A

いいえ。公式チュートリアルは、左辺の変数の数が右辺のシーケンスの長さと同じ数であることを要求しています。

Qa, b = 1, 2 ではパックとアンパックのどちらが行われますか?

A

両方です。公式チュートリアルによると、複数同時の代入はタプルのパックとシーケンスのアンパックを組み合わせたものです。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)