はじめに
Pythonのデータ型の1つであるタプル型の使い方を解説します。
組み込みメソッドの処理の裏で、引数や値が実はタプルになっていたなんてこともあります。
リスト型とは使い方が変わるので注意して使いましょう!

解説していくよ〜
タプルとは
基本的なシーケンス型は 3 つあります: リスト、タプル、range オブジェクトです。
….
タプルはイミュータブルなシーケンスで、一般的に異種のデータの集まり (組み込みの
python3.9 ドキュメントenumerate()
で作られた 2-タプルなど) を格納するために使われます。タプルはまた、同種のデータのイミュータブルなシーケンスが必要な場合 (set
インスタンスやdict
インスタンスに保存できるようにするためなど) にも使われます。
タプルとは様々なデータ型の要素を格納できる箱であり、中に入っている要素を変更したり順番を入れ替えたりできないというイミュータブルな性質を持っているデータ型です。
イメージとしては重要な物を入れておくための鍵付きの金庫を想像するとわかりやすいかもしれません。




シーケンスってなに?




数の値を順番に並べたものをひとかたまりとして格納するための型のことだよ!




なるほどね!
いっぱいものがあると溢れないように箱とかに入れるもんね。
タプルの定義の仕方
主なタプルの定義の仕方ですが以下の3つです。
- ()で囲う。要素が1つの場合は,をつける
- tuppleメソッドを使う。
- ,で終わる値を代入する。
# ①()で囲う。要素が1つの場合は,をつける
tupple = (要素1, 要素2)
tupple1 = (要素1, )
# ②tuppleメソッドにリスト型のデータを引数に渡す。
sample2 = tupple([要素1, 要素2,要素3])
# ③,で終わる値を代入する。
sample3 = 要素1, 要素2,
タプルを作るのは()ではなく、その中に入っている『 , 』です。
そのため、要素があるなら()を省略しても可能です。
もし打ち間違えて『 , 』をつけて終わらせてしまうとエラーになってしまうケースも多々あります汗
# よくあるケアレスミス
# 計算をしているつもりが最後に『 , 』をつけてしまう
sum = 1 + 2,
>>> num = ,
^
SyntaxError: invalid syntax




うわぁ、、、
やっちゃいそうだなぁ・・・




タプルを知らないとどこが間違いか気づきにくいからね。
気をつけて!!
タプルのアンパッキング
タプルの要素を操作することはできないのですが、中身を別の変数に入れることは可能です!
荷ほどきする形と似ていることからアンパッキングと呼びます。
では実際にどうするか確認してみましょう。
# タプルのアンパッキンング
num = (1, 2)
# 同じタプル型としてそれぞれ変数を用意し代入
x, y = num
# 出力して確認してみる。
print(x)
print(y)
>>> 1
2
まずアンパッキングしたいタプルの要素と同じ数の変数を用意、タプル化します。
用意した変数のタプルにアンパッキングしたいタプルを代入することでそれぞれの変数に値が格納されます。
入った値はタプルが解除されています。
# それぞれの変数に入った値のデータ型を確認する。
type(x)
>>> int
type(y)
>>> int
アンパッキングを利用した値の入れ替え
上記の特性を利用して1行で値を入れ替えることができます。
通常であれば変数に入った値を入れ替えるには数行必要になります。
a = 1
b = 2
# tmpという変数に一時的に値を逃す
tmp = a
# bに入っている2の値をaに格納する
a = b
# tmpに避難した1の値をbに格納する
b = tmp
これをタプルのアンパッキングを使うと1行で済みます。
a = 1
b = 2
# タプル化してアンパッキング
# 下のコードは a, b = 2, 1と同一となる
a, b = b, a




めちゃくちゃ短くかけたね!




便利だけど、長すぎる物を入れ替えようとすると後からコードが読みにくくなるからね。
3つ以上の値の入れ替えはあまりオススメしないよ。
タプルの使いどころ
タプルは値の更新や操作がしにくいので、どういった時に用いられるかということを説明します。
上記のイミュータブルな性質を利用し、絶対に変更されたくない値を入れておく配列として使うことが多いです。(個人的に)
具体的なイメージ
具体的な例として…例えばテストの採点をイメージしてください。
4択問題で複数回答できる場合、正解の値を配列に入れておきたいです。
しかし、後任者がコードを読み間違って正解の配列に値を追加したり、値を変更してしまうと困りますよね?
タプルを使っておけば操作しようとしたらエラーが吐かれるので変更されてしまう心配は無いわけです。
終わりに
- タプルは入れた値を追加変更などの更新ができないイミュータブルな型である。
- タプルの定義は,で行う!
- アンパッキングを使えば値を振り分けられる。




Pythonの学習に関しては様々本屋には書籍が並んでいますが、下記がおすすめです。
EXCELなども使ったことのない初学者の方
EXCELなどでちょっとPCの操作に慣れている方
他のプログラミング言語を少し触ったことがある方