【Python初心者入門シリーズ】タプルの使い方 初級編

スポンサーリンク

はじめに

Pythonのデータ型の1つであるタプル型の使い方を解説します。

組み込みメソッドの処理の裏で、引数や値が実はタプルになっていたなんてこともあります。

リスト型とは使い方が変わるので注意して使いましょう!

さめさん
さめさん

解説していくよ〜

タプルとは

基本的なシーケンス型は 3 つあります: リスト、タプル、range オブジェクトです。

….

タプルはイミュータブルなシーケンスで、一般的に異種のデータの集まり (組み込みの enumerate() で作られた 2-タプルなど) を格納するために使われます。タプルはまた、同種のデータのイミュータブルなシーケンスが必要な場合 (set インスタンスや dict インスタンスに保存できるようにするためなど) にも使われます。

python3.9 ドキュメント

タプルとは様々なデータ型の要素を格納できる箱であり、中に入っている要素を変更したり順番を入れ替えたりできないというイミュータブルな性質を持っているデータ型です。

イメージとしては重要な物を入れておくための鍵付きの金庫を想像するとわかりやすいかもしれません。

クマくん
クマくん

シーケンスってなに?

さめさん
さめさん

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

クマくん
クマくん

なるほどね!

いっぱいものがあると溢れないように箱とかに入れるもんね。

タプルの定義の仕方

主なタプルの定義の仕方ですが以下の3つです。

  1. ()で囲う。要素が1つの場合は,をつける
  2. tuppleメソッドを使う。
  3. ,で終わる値を代入する。
# ①()で囲う。要素が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の操作に慣れている方

他のプログラミング言語を少し触ったことがある方

タイトルとURLをコピーしました