【初心者向け】Pythonでタプルをパック・アンパックする方法を徹底解説
Pythonには「タプル(tuple)」と呼ばれる、一度作成すると内容を変更できないイミュータブル(変更不可)なデータ型が用意されています。本記事では、Python 3.x以降を対象に、タプルのパッキング(詰め込み)とアンパッキング(取り出し)の基本的な使い方から、応用テクニックまでを実例とともにわかりやすく解説します。
タプルのパッキングとアンパッキングとは
Pythonには、右辺の値を左辺の変数へ対応付ける非常に強力な代入機能があります。この対応付けによって、タプル内の複数の値を通常の変数へ展開することをアンパッキングと呼びます。逆に、通常の代入によって複数の値をひとつのタプルにまとめることをパッキングと呼びます。
それでは、実際のコードを見ていきましょう。
基本例:タプルのパッキングとアンパッキング
# 複数の値を1つの変数名のもとにパックする
tup = ("Tutorialspoint", "Python", "Unpacking a tuple")
# タプルを個々の変数へアンパックする
(website, language, topic) = tup
# 結果を出力
print(website, "\t", language, " ", topic)
出力結果
Tutorialspoint Python Unpacking a tuple
タプルをアンパックする際は、左辺の変数の総数が、タプル内の値の総数と一致している必要がある点に注意してください。数が合っていない場合はエラーが発生します。
*argsを使った任意の長さのアンパッキング
値の数が事前にわからない場合や、一部だけを受け取りたい場合には、アスタリスク(*)を付けた変数が便利です。*変数名を指定すると、残りのすべての値がリストとしてその変数に代入されます。
例:*languageで中間の値をまとめて受け取る
# 複数の値を1つの変数名のもとにパックする
tup = ("Tutorialspoint", "Python", "3.x.", ":Data Structure", "Unpacking a tuple")
# アスタリスク付き変数でアンパックする
(website, *language, topic) = tup
# 結果を出力
print(website, "\t", *language, " ", topic)
出力結果
Tutorialspoint Python 3.x. :Data Structure Unpacking a tuple
この例では、先頭の値が website に、末尾の値が topic に代入され、残りの3つの値がすべて language にリストとして格納されます。
関数でのタプルのアンパッキング
タプルは関数に渡すこともできます。関数側で受け取ったタプルをアンパックすれば、任意の個数の引数を柔軟に処理できます。
また、「*_」を使うと、不要な値をまとめて無視(スキップ)することが可能です。
例:*_で不要な値をスキップする
# 複数の値を1つの変数名のもとにパックする
tup = ("Tutorialspoint", "Python", "3.x.", "Data Structure:", "Unpacking a tuple")
# 不要な引数をスキップしてアンパックする
(website, *_, typ, topic) = tup
# 結果を出力
print(website, "\t", typ, " ", topic)
出力結果
Tutorialspoint Data Structure: Unpacking a tuple
このコードでは、先頭の値を website に、末尾から2番目の値を typ に、最後の値を topic に代入し、間の不要な値は *_ がすべて引き受けています。
なお、スキップしたい値が1つだけの場合は、*_ の代わりに「_」を使用します。
まとめ
本記事では、Pythonにおけるタプルのパッキングとアンパッキングについて学びました。ポイントを整理すると以下の通りです。
- 通常の代入で複数の値をタプルにまとめられる(パッキング)
- 左辺の変数に展開できる(アンパッキング)。ただし変数の数と値の数は一致させる必要がある
*変数名を使えば、任意の長さの残りの値をリストとして受け取れる*_や_を使えば、不要な値を簡単にスキップできる
これらのテクニックを活用することで、より簡潔で読みやすいPythonコードを書けるようになります。ぜひ実際のコーディングで試してみてください。
-
Pythonでタプルを定義するには?基本の作成方法をわかりやすく解説
Pythonにおけるタプルとはタプル(tuple)は、Pythonの標準データ型のひとつで、複数のオブジェクトを順序付けて格納できるイミュータブル(変更不可)なシーケンスです。リストとよく似ていますが、一度作成した後は要素の追加・削除・変更ができないという点が大きな特徴です。タプルの基本的な定義方法タプルオブジェクトは、1つ以上のオブジェクトをカンマ(,)で区切って並べるだけで作成できます。各要素は必ずしも同じ型である必要はなく、整数・文字列・浮動小数点数・真偽値など、異なる型のオブジェクトを自由に混在させることができます。また、コレクション全体を丸括弧 ( ) で囲むこともできますが、これは
-
Pythonタプル(tuple)入門:作成・操作・削除の基本をコード例で解説
Pythonにおけるタプル(tuple)は、順序付け(ordered)かつ変更不可(immutable)という特徴を持つコレクションです。変更不可であるため、一度作成したタプルに要素を追加したり削除したりすることはできません。 タプルは丸括弧 () と、最低1つのカンマ , を使って作成します。 また、タプルはリストと同じようにインデックス指定やスライシングが可能ですが、スライスの結果もタプルとして返される点に注意しましょう。 タプルの作り方 colorsTuple = (red, green, blue) print(colorsTuple) 実行結果: (red, green, blue